pydantic-ai 0.7.5__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.
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/PKG-INFO +3 -3
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/conftest.py +7 -2
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/json_body_serializer.py +1 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_model_names/test_known_model_names.yaml +65 -0
- pydantic_ai-0.7.6/tests/models/cassettes/test_openai/test_openai_model_cerebras_provider.yaml +69 -0
- pydantic_ai-0.7.6/tests/models/cassettes/test_openai/test_openai_model_cerebras_provider_harmony.yaml +70 -0
- pydantic_ai-0.7.6/tests/models/cassettes/test_openai/test_openai_model_cerebras_provider_qwen_3_coder.yaml +189 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/test_deepseek.py +3 -3
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/test_model.py +8 -8
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/test_model_names.py +26 -2
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/test_openai.py +111 -72
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/test_openai_responses.py +3 -3
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/providers/test_azure.py +4 -4
- pydantic_ai-0.7.6/tests/providers/test_cerebras.py +86 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/providers/test_deepseek.py +2 -2
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/providers/test_grok.py +2 -2
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/providers/test_heroku.py +3 -3
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/providers/test_moonshotai.py +2 -2
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/providers/test_openrouter.py +2 -2
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/test_cli.py +3 -2
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/test_examples.py +5 -4
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/test_live.py +4 -4
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/test_logfire.py +217 -113
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/test_mcp.py +3 -3
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/test_temporal.py +2 -2
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/test_tenacity.py +121 -27
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/.gitignore +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/LICENSE +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/Makefile +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/README.md +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/pyproject.toml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/__init__.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/assets/dummy.pdf +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/assets/kiwi.png +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/assets/marcelo.mp3 +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/assets/product_name.txt +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/assets/small_video.mp4 +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_mcp/test_agent_with_server_not_running.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_mcp/test_agent_with_stdio_server.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_mcp/test_tool_returning_audio_resource.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_mcp/test_tool_returning_audio_resource_link.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_mcp/test_tool_returning_dict.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_mcp/test_tool_returning_error.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_mcp/test_tool_returning_image.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_mcp/test_tool_returning_image_resource.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_mcp/test_tool_returning_image_resource_link.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_mcp/test_tool_returning_multiple_items.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_mcp/test_tool_returning_none.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_mcp/test_tool_returning_str.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_mcp/test_tool_returning_text_resource.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_mcp/test_tool_returning_text_resource_link.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_settings/test_stop_settings[anthropic].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_settings/test_stop_settings[bedrock].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_settings/test_stop_settings[cohere].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_settings/test_stop_settings[gemini].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_settings/test_stop_settings[google].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_settings/test_stop_settings[groq].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_settings/test_stop_settings[mistral].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_settings/test_stop_settings[openai].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_temporal/test_complex_agent_run.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_temporal/test_complex_agent_run_in_workflow.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_temporal/test_complex_agent_run_stream_in_workflow.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_temporal/test_logfire_plugin.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_temporal/test_multiple_agents.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_temporal/test_simple_agent_run_in_workflow.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_temporal/test_temporal_agent_iter.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_temporal/test_temporal_agent_override_deps_in_workflow.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_temporal/test_temporal_agent_run.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_temporal/test_temporal_agent_run_stream.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_temporal/test_temporal_agent_run_sync.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_temporal/test_temporal_agent_sync_tool_activity_disabled.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_temporal/test_temporal_agent_with_dataclass_deps_as_dict.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_temporal/test_temporal_agent_with_non_dict_deps.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/cassettes/test_temporal/test_temporal_agent_with_unserializable_deps_type.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/evals/__init__.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/evals/test_dataset.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/evals/test_evaluator_base.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/evals/test_evaluator_common.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/evals/test_evaluator_context.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/evals/test_evaluator_spec.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/evals/test_evaluators.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/evals/test_llm_as_a_judge.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/evals/test_otel.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/evals/test_render_numbers.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/evals/test_reporting.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/evals/test_reports.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/evals/test_utils.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/evals/utils.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/example_modules/README.md +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/example_modules/bank_database.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/example_modules/fake_database.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/example_modules/mcp_server.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/example_modules/weather_service.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/ext/__init__.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/ext/test_langchain.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/graph/__init__.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/graph/test_file_persistence.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/graph/test_graph.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/graph/test_mermaid.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/graph/test_persistence.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/graph/test_state.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/graph/test_utils.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/import_examples.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/mcp_server.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/__init__.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_anthropic_code_execution_tool.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_anthropic_model_empty_message_on_history.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_anthropic_model_instructions.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_stream.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output_multiple.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_anthropic_server_tool_pass_history_to_another_provider.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_anthropic_server_tool_receive_history_from_another_provider.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_anthropic_text_output_function.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_anthropic_tool_output.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_anthropic_tool_with_thinking.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_anthropic_web_search_tool.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_anthropic_web_search_tool_stream.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_document_binary_content_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_document_url_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_extra_headers.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_image_url_input_invalid_mime_type.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_multiple_parallel_tool_calls.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_text_document_url_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_anthropic_tool_with_thinking.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_empty_system_prompt.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_model.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_anthropic_model_without_tools.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_guardrail_config.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_instructions.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_iter_stream.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_max_tokens.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_other_parameters.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_performance_config.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_retry.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_stream.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_structured_output.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_stream.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_top_p.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_multiple_documents_in_history.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_document_url_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_text_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_text_document_url_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_video_url_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_cohere/test_cohere_model_instructions.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_cohere/test_cohere_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_cohere/test_request_simple_success_with_vcr.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_stream.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_download_item/test_download_item_application_octet_stream.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_download_item/test_download_item_audio_mpeg.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_download_item/test_download_item_no_content_type.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_document_url_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_false.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_true.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_gemini_drop_exclusive_maximum.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_gemini_exclusive_minimum_and_maximum.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_gemini_model_instructions.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_gemini_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_gemini_native_output.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_gemini_native_output_multiple.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_gemini_prompted_output.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_multiple.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_with_tools.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_gemini_text_output_function.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_gemini_tool_config_any_with_tool_without_args.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_gemini_tool_output.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_gemini_youtube_video_url_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_labels_are_ignored_with_gla_provider.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_video_url_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini_vertex/test_labels.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl (gs)].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl (gs)].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl (gs)].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (YouTube)].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (gs)].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini_vertex/test_url_input_force_download.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_code_execution_tool.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_document_url_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_empty_assistant_response.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_empty_user_prompt.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_image_url_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_instructions.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_iter_stream.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_max_tokens.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_multiple_documents_in_history.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_receive_web_search_history_from_another_provider.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_retry.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_safety_settings.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_server_tool_receive_history_from_another_provider.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_stream.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_structured_output.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_text_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_text_document_url_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_thinking_config.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_thinking_part_iter.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_top_p.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_url_context_tool.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_usage_limit_exceeded.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_usage_limit_not_exceeded.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_vertex_labels.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_vertex_provider.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input_with_vendor_metadata.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_video_url_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_web_search_tool.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_youtube_video_url_input_with_vendor_metadata.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_native_output.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_native_output_multiple.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_prompted_output.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_prompted_output_multiple.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_prompted_output_with_tools.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_text_output_function.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_timeout.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_tool_config_any_with_tool_without_args.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_tool_output.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl (gs)].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl (gs)].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl (gs)].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (YouTube)].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (gs)].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_url_input_force_download.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_vertexai_model_usage_limit_exceeded.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_groq/test_extra_headers.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_groq/test_groq_model_instructions.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_groq/test_groq_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_groq/test_groq_model_thinking_part_iter.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_groq/test_groq_model_web_search_tool.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_groq/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_groq/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_groq/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_huggingface/test_hf_model_instructions.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_huggingface/test_hf_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_huggingface/test_hf_model_thinking_part_iter.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_huggingface/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_huggingface/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[Qwen-Qwen2.5-72B-Instruct].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[deepseek-ai-DeepSeek-R1-0528].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[meta-llama-Llama-3.3-70B-Instruct].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_huggingface/test_request_simple_success_with_vcr.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_huggingface/test_request_simple_usage.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_huggingface/test_simple_completion.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_huggingface/test_stream_completion.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_mistral/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_mistral/test_mistral_model_instructions.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_audio_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_compatible_api_with_tool_calls_without_id.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_document_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_document_as_binary_content_input_with_tool.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_document_url_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_extra_headers.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_image_url_tool_response.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_invalid_response.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4.5-preview].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4o-mini].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_max_completion_tokens[o3-mini].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_multiple_agent_tool_calls.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_audio_url_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_instructions.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_instructions_with_tool_calls_keep_instructions.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_model_settings_temperature_ignored_on_gpt_5.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_model_thinking_part_iter.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_model_without_system_prompt.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_native_output.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_native_output_multiple.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[developer].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[system].yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_prompted_output.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_prompted_output_multiple.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_responses_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_text_output_function.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_tool_output.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_web_search_tool.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_web_search_tool_model_not_supported.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_web_search_tool_with_user_location.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_reasoning_model_with_temperature.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_system_prompt_role_o1_mini.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_text_response.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_user_id.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_valid_response.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_audio_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_native_output.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_native_output_multiple.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_code_execution_tool.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_code_execution_tool_stream.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_url_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_url_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_http_error.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_instructions.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_retry.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response_with_tool_call.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_stream.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_with_invalid_region.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_with_user_location.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_output_type.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_effort.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_generate_summary.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_stream.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_system_prompt.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_text_document_url_input.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_verbosity.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_prompted_output.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_prompted_output_multiple.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_reasoning_model_with_temperature.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_text_output_function.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_tool_output.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/mock_async_stream.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/test_anthropic.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/test_bedrock.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/test_cohere.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/test_download_item.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/test_fallback.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/test_gemini.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/test_gemini_vertex.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/test_google.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/test_groq.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/test_huggingface.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/test_instrumented.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/test_mcp_sampling.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/test_mistral.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/test_model_function.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/test_model_request_parameters.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/test_model_settings.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/models/test_model_test.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/parts_from_messages.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/providers/__init__.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/providers/cassettes/test_azure/test_azure_provider_call.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/providers/cassettes/test_google_vertex/test_vertexai_provider.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/providers/cassettes/test_heroku/test_heroku_model_provider_claude_3_7_sonnet.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/providers/cassettes/test_openrouter/test_openrouter_with_google_model.yaml +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/providers/test_anthropic.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/providers/test_bedrock.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/providers/test_cohere.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/providers/test_fireworks.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/providers/test_github.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/providers/test_google_gla.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/providers/test_google_vertex.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/providers/test_groq.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/providers/test_huggingface.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/providers/test_mistral.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/providers/test_ollama.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/providers/test_openai.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/providers/test_provider_names.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/providers/test_together.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/providers/test_vercel.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/test_a2a.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/test_ag_ui.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/test_agent.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/test_builtin_tools.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/test_deps.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/test_direct.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/test_format_as_xml.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/test_history_processor.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/test_json_body_serializer.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/test_messages.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/test_parts_manager.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/test_settings.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/test_streaming.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/test_thinking_part.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/test_tools.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/test_toolsets.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/test_usage_limits.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/test_utils.py +0 -0
- {pydantic_ai-0.7.5 → pydantic_ai-0.7.6}/tests/typed_agent.py +0 -0
- {pydantic_ai-0.7.5 → 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.
|
|
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.
|
|
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.
|
|
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:
|
|
@@ -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
|
|
484
|
+
from pydantic_ai.models.openai import OpenAIChatModel
|
|
480
485
|
from pydantic_ai.providers.openai import OpenAIProvider
|
|
481
486
|
|
|
482
|
-
return
|
|
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
|
|
@@ -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,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
|
|
@@ -0,0 +1,189 @@
|
|
|
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
|
+
- '414'
|
|
12
|
+
content-type:
|
|
13
|
+
- application/json
|
|
14
|
+
cookie:
|
|
15
|
+
- __cf_bm=hqG7YTrLAdrCNKQU34H3qhIKxESTvFsG9X7OjEzKuDk-1756198142-1.0.1.1-WG8.rT3zC66xxHN6c33AcERCdH0FDum2a7djbEu85gy9rEiq9nTHQVY8g5BAZ_DmviuVxhphMwTsxDclYqQCobIlgurA9g.prg5M_i9PZyM
|
|
16
|
+
host:
|
|
17
|
+
- api.cerebras.ai
|
|
18
|
+
method: POST
|
|
19
|
+
parsed_body:
|
|
20
|
+
messages:
|
|
21
|
+
- content: What is the capital of France?
|
|
22
|
+
role: user
|
|
23
|
+
model: qwen-3-coder-480b
|
|
24
|
+
stream: false
|
|
25
|
+
tool_choice: auto
|
|
26
|
+
tools:
|
|
27
|
+
- function:
|
|
28
|
+
description: The final response which ends this conversation
|
|
29
|
+
name: final_result
|
|
30
|
+
parameters:
|
|
31
|
+
properties:
|
|
32
|
+
city:
|
|
33
|
+
type: string
|
|
34
|
+
country:
|
|
35
|
+
type: string
|
|
36
|
+
required:
|
|
37
|
+
- city
|
|
38
|
+
- country
|
|
39
|
+
title: Location
|
|
40
|
+
type: object
|
|
41
|
+
type: function
|
|
42
|
+
uri: https://api.cerebras.ai/v1/chat/completions
|
|
43
|
+
response:
|
|
44
|
+
headers:
|
|
45
|
+
alt-svc:
|
|
46
|
+
- h3=":443"; ma=86400
|
|
47
|
+
connection:
|
|
48
|
+
- keep-alive
|
|
49
|
+
content-length:
|
|
50
|
+
- '645'
|
|
51
|
+
content-type:
|
|
52
|
+
- application/json
|
|
53
|
+
inference-id:
|
|
54
|
+
- chatcmpl-65763e70-ba85-41a3-a758-4dc3fcb73c9a
|
|
55
|
+
referrer-policy:
|
|
56
|
+
- strict-origin-when-cross-origin
|
|
57
|
+
strict-transport-security:
|
|
58
|
+
- max-age=3600; includeSubDomains
|
|
59
|
+
transfer-encoding:
|
|
60
|
+
- chunked
|
|
61
|
+
parsed_body:
|
|
62
|
+
choices:
|
|
63
|
+
- finish_reason: stop
|
|
64
|
+
index: 0
|
|
65
|
+
message:
|
|
66
|
+
content: The capital of France is Paris. If you need more information about Paris or any other details, feel free
|
|
67
|
+
to ask!
|
|
68
|
+
role: assistant
|
|
69
|
+
created: 1756198142
|
|
70
|
+
id: chatcmpl-65763e70-ba85-41a3-a758-4dc3fcb73c9a
|
|
71
|
+
model: qwen-3-coder-480b
|
|
72
|
+
object: chat.completion
|
|
73
|
+
system_fingerprint: fp_4405be376d055dc5bff7
|
|
74
|
+
time_info:
|
|
75
|
+
completion_time: 0.045860486
|
|
76
|
+
created: 1756198142
|
|
77
|
+
prompt_time: 0.011004894
|
|
78
|
+
queue_time: 0.001344637
|
|
79
|
+
total_time: 0.05971097946166992
|
|
80
|
+
usage:
|
|
81
|
+
completion_tokens: 25
|
|
82
|
+
prompt_tokens: 304
|
|
83
|
+
prompt_tokens_details:
|
|
84
|
+
cached_tokens: 0
|
|
85
|
+
total_tokens: 329
|
|
86
|
+
status:
|
|
87
|
+
code: 200
|
|
88
|
+
message: OK
|
|
89
|
+
- request:
|
|
90
|
+
headers:
|
|
91
|
+
accept:
|
|
92
|
+
- application/json
|
|
93
|
+
accept-encoding:
|
|
94
|
+
- gzip, deflate
|
|
95
|
+
connection:
|
|
96
|
+
- keep-alive
|
|
97
|
+
content-length:
|
|
98
|
+
- '727'
|
|
99
|
+
content-type:
|
|
100
|
+
- application/json
|
|
101
|
+
cookie:
|
|
102
|
+
- __cf_bm=hqG7YTrLAdrCNKQU34H3qhIKxESTvFsG9X7OjEzKuDk-1756198142-1.0.1.1-WG8.rT3zC66xxHN6c33AcERCdH0FDum2a7djbEu85gy9rEiq9nTHQVY8g5BAZ_DmviuVxhphMwTsxDclYqQCobIlgurA9g.prg5M_i9PZyM
|
|
103
|
+
host:
|
|
104
|
+
- api.cerebras.ai
|
|
105
|
+
method: POST
|
|
106
|
+
parsed_body:
|
|
107
|
+
messages:
|
|
108
|
+
- content: What is the capital of France?
|
|
109
|
+
role: user
|
|
110
|
+
- content: The capital of France is Paris. If you need more information about Paris or any other details, feel free
|
|
111
|
+
to ask!
|
|
112
|
+
role: assistant
|
|
113
|
+
- content: |-
|
|
114
|
+
Validation feedback:
|
|
115
|
+
Plain text responses are not permitted, please include your response in a tool call
|
|
116
|
+
|
|
117
|
+
Fix the errors and try again.
|
|
118
|
+
role: user
|
|
119
|
+
model: qwen-3-coder-480b
|
|
120
|
+
stream: false
|
|
121
|
+
tool_choice: auto
|
|
122
|
+
tools:
|
|
123
|
+
- function:
|
|
124
|
+
description: The final response which ends this conversation
|
|
125
|
+
name: final_result
|
|
126
|
+
parameters:
|
|
127
|
+
properties:
|
|
128
|
+
city:
|
|
129
|
+
type: string
|
|
130
|
+
country:
|
|
131
|
+
type: string
|
|
132
|
+
required:
|
|
133
|
+
- city
|
|
134
|
+
- country
|
|
135
|
+
title: Location
|
|
136
|
+
type: object
|
|
137
|
+
type: function
|
|
138
|
+
uri: https://api.cerebras.ai/v1/chat/completions
|
|
139
|
+
response:
|
|
140
|
+
headers:
|
|
141
|
+
alt-svc:
|
|
142
|
+
- h3=":443"; ma=86400
|
|
143
|
+
connection:
|
|
144
|
+
- keep-alive
|
|
145
|
+
content-length:
|
|
146
|
+
- '672'
|
|
147
|
+
content-type:
|
|
148
|
+
- application/json
|
|
149
|
+
inference-id:
|
|
150
|
+
- chatcmpl-6659125c-6d06-402c-be3b-4640aa64ffa2
|
|
151
|
+
referrer-policy:
|
|
152
|
+
- strict-origin-when-cross-origin
|
|
153
|
+
strict-transport-security:
|
|
154
|
+
- max-age=3600; includeSubDomains
|
|
155
|
+
transfer-encoding:
|
|
156
|
+
- chunked
|
|
157
|
+
parsed_body:
|
|
158
|
+
choices:
|
|
159
|
+
- finish_reason: tool_calls
|
|
160
|
+
index: 0
|
|
161
|
+
message:
|
|
162
|
+
role: assistant
|
|
163
|
+
tool_calls:
|
|
164
|
+
- function:
|
|
165
|
+
arguments: '{"city": "Paris", "country": "France"}'
|
|
166
|
+
name: final_result
|
|
167
|
+
id: b8847f144
|
|
168
|
+
type: function
|
|
169
|
+
created: 1756198143
|
|
170
|
+
id: chatcmpl-6659125c-6d06-402c-be3b-4640aa64ffa2
|
|
171
|
+
model: qwen-3-coder-480b
|
|
172
|
+
object: chat.completion
|
|
173
|
+
system_fingerprint: fp_4405be376d055dc5bff7
|
|
174
|
+
time_info:
|
|
175
|
+
completion_time: 0.103362557
|
|
176
|
+
created: 1756198143
|
|
177
|
+
prompt_time: 0.22219986
|
|
178
|
+
queue_time: 0.346436935
|
|
179
|
+
total_time: 0.6736249923706055
|
|
180
|
+
usage:
|
|
181
|
+
completion_tokens: 33
|
|
182
|
+
prompt_tokens: 364
|
|
183
|
+
prompt_tokens_details:
|
|
184
|
+
cached_tokens: 0
|
|
185
|
+
total_tokens: 397
|
|
186
|
+
status:
|
|
187
|
+
code: 200
|
|
188
|
+
message: OK
|
|
189
|
+
version: 1
|
|
@@ -24,7 +24,7 @@ from pydantic_ai.usage import RequestUsage
|
|
|
24
24
|
from ..conftest import IsDatetime, IsStr, try_import
|
|
25
25
|
|
|
26
26
|
with try_import() as imports_successful:
|
|
27
|
-
from pydantic_ai.models.openai import
|
|
27
|
+
from pydantic_ai.models.openai import OpenAIChatModel
|
|
28
28
|
from pydantic_ai.providers.deepseek import DeepSeekProvider
|
|
29
29
|
|
|
30
30
|
|
|
@@ -36,7 +36,7 @@ pytestmark = [
|
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
async def test_deepseek_model_thinking_part(allow_model_requests: None, deepseek_api_key: str):
|
|
39
|
-
deepseek_model =
|
|
39
|
+
deepseek_model = OpenAIChatModel('deepseek-reasoner', provider=DeepSeekProvider(api_key=deepseek_api_key))
|
|
40
40
|
agent = Agent(model=deepseek_model)
|
|
41
41
|
result = await agent.run('How do I cross the street?')
|
|
42
42
|
assert result.all_messages() == snapshot(
|
|
@@ -63,7 +63,7 @@ async def test_deepseek_model_thinking_part(allow_model_requests: None, deepseek
|
|
|
63
63
|
|
|
64
64
|
|
|
65
65
|
async def test_deepseek_model_thinking_stream(allow_model_requests: None, deepseek_api_key: str):
|
|
66
|
-
deepseek_model =
|
|
66
|
+
deepseek_model = OpenAIChatModel('deepseek-reasoner', provider=DeepSeekProvider(api_key=deepseek_api_key))
|
|
67
67
|
agent = Agent(model=deepseek_model)
|
|
68
68
|
|
|
69
69
|
event_parts: list[Any] = []
|
|
@@ -10,10 +10,10 @@ from ..conftest import TestEnv
|
|
|
10
10
|
# TODO(Marcelo): We need to add Vertex AI to the test cases.
|
|
11
11
|
|
|
12
12
|
TEST_CASES = [
|
|
13
|
-
('OPENAI_API_KEY', 'openai:gpt-3.5-turbo', 'gpt-3.5-turbo', 'openai', 'openai', '
|
|
14
|
-
('OPENAI_API_KEY', 'gpt-3.5-turbo', 'gpt-3.5-turbo', 'openai', 'openai', '
|
|
15
|
-
('OPENAI_API_KEY', 'o1', 'o1', 'openai', 'openai', '
|
|
16
|
-
('AZURE_OPENAI_API_KEY', 'azure:gpt-3.5-turbo', 'gpt-3.5-turbo', 'azure', 'azure', '
|
|
13
|
+
('OPENAI_API_KEY', 'openai:gpt-3.5-turbo', 'gpt-3.5-turbo', 'openai', 'openai', 'OpenAIChatModel'),
|
|
14
|
+
('OPENAI_API_KEY', 'gpt-3.5-turbo', 'gpt-3.5-turbo', 'openai', 'openai', 'OpenAIChatModel'),
|
|
15
|
+
('OPENAI_API_KEY', 'o1', 'o1', 'openai', 'openai', 'OpenAIChatModel'),
|
|
16
|
+
('AZURE_OPENAI_API_KEY', 'azure:gpt-3.5-turbo', 'gpt-3.5-turbo', 'azure', 'azure', 'OpenAIChatModel'),
|
|
17
17
|
('GEMINI_API_KEY', 'google-gla:gemini-1.5-flash', 'gemini-1.5-flash', 'google-gla', 'google', 'GoogleModel'),
|
|
18
18
|
('GEMINI_API_KEY', 'gemini-1.5-flash', 'gemini-1.5-flash', 'google-gla', 'google', 'GoogleModel'),
|
|
19
19
|
(
|
|
@@ -70,7 +70,7 @@ TEST_CASES = [
|
|
|
70
70
|
'xai/grok-3-mini',
|
|
71
71
|
'github',
|
|
72
72
|
'github',
|
|
73
|
-
'
|
|
73
|
+
'OpenAIChatModel',
|
|
74
74
|
),
|
|
75
75
|
(
|
|
76
76
|
'MOONSHOTAI_API_KEY',
|
|
@@ -78,7 +78,7 @@ TEST_CASES = [
|
|
|
78
78
|
'kimi-k2-0711-preview',
|
|
79
79
|
'moonshotai',
|
|
80
80
|
'moonshotai',
|
|
81
|
-
'
|
|
81
|
+
'OpenAIChatModel',
|
|
82
82
|
),
|
|
83
83
|
(
|
|
84
84
|
'GROK_API_KEY',
|
|
@@ -86,7 +86,7 @@ TEST_CASES = [
|
|
|
86
86
|
'grok-3',
|
|
87
87
|
'grok',
|
|
88
88
|
'grok',
|
|
89
|
-
'
|
|
89
|
+
'OpenAIChatModel',
|
|
90
90
|
),
|
|
91
91
|
(
|
|
92
92
|
'GROK_API_KEY',
|
|
@@ -94,7 +94,7 @@ TEST_CASES = [
|
|
|
94
94
|
'grok-4',
|
|
95
95
|
'grok',
|
|
96
96
|
'grok',
|
|
97
|
-
'
|
|
97
|
+
'OpenAIChatModel',
|
|
98
98
|
),
|
|
99
99
|
(
|
|
100
100
|
'OPENAI_API_KEY',
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import os
|
|
2
2
|
from collections.abc import Iterator
|
|
3
3
|
from functools import partial
|
|
4
|
-
from typing import Any
|
|
4
|
+
from typing import Any, Literal
|
|
5
5
|
|
|
6
6
|
import httpx
|
|
7
7
|
import pytest
|
|
@@ -43,7 +43,7 @@ def vcr_config(): # pragma: lax no cover
|
|
|
43
43
|
return {
|
|
44
44
|
'record_mode': 'rewrite',
|
|
45
45
|
'filter_headers': ['accept-encoding'],
|
|
46
|
-
'before_record_response': partial(modify_response, filter_headers=['cache-control']),
|
|
46
|
+
'before_record_response': partial(modify_response, filter_headers=['cache-control', 'connection']),
|
|
47
47
|
}
|
|
48
48
|
return {'record_mode': 'none'}
|
|
49
49
|
|
|
@@ -74,6 +74,7 @@ def test_known_model_names():
|
|
|
74
74
|
deepseek_names = ['deepseek:deepseek-chat', 'deepseek:deepseek-reasoner']
|
|
75
75
|
huggingface_names = [f'huggingface:{n}' for n in get_model_names(HuggingFaceModelName)]
|
|
76
76
|
heroku_names = get_heroku_model_names()
|
|
77
|
+
cerebras_names = get_cerebras_model_names()
|
|
77
78
|
extra_names = ['test']
|
|
78
79
|
|
|
79
80
|
generated_names = sorted(
|
|
@@ -89,6 +90,7 @@ def test_known_model_names():
|
|
|
89
90
|
+ deepseek_names
|
|
90
91
|
+ huggingface_names
|
|
91
92
|
+ heroku_names
|
|
93
|
+
+ cerebras_names
|
|
92
94
|
+ extra_names
|
|
93
95
|
)
|
|
94
96
|
|
|
@@ -115,3 +117,25 @@ def get_heroku_model_names():
|
|
|
115
117
|
if 'text-to-text' in model['type']:
|
|
116
118
|
models.append(f'heroku:{model["model_id"]}')
|
|
117
119
|
return sorted(models)
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
class CerebrasModel(TypedDict):
|
|
123
|
+
created: int
|
|
124
|
+
id: str
|
|
125
|
+
object: Literal['model']
|
|
126
|
+
owned_by: Literal['Cerebras']
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
def get_cerebras_model_names():
|
|
130
|
+
api_key = os.getenv('CEREBRAS_API_KEY', 'testing')
|
|
131
|
+
|
|
132
|
+
response = httpx.get(
|
|
133
|
+
'https://api.cerebras.ai/v1/models',
|
|
134
|
+
headers={'Authorization': f'Bearer {api_key}', 'Accept': 'application/json', 'Accept-Encoding': 'identity'},
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
if response.status_code != 200:
|
|
138
|
+
pytest.skip(f'Cerebras returned status code {response.status_code}') # pragma: lax no cover
|
|
139
|
+
|
|
140
|
+
cerebras_models: list[CerebrasModel] = response.json()['data']
|
|
141
|
+
return sorted(f'cerebras:{model["id"]}' for model in cerebras_models)
|