pydantic-ai 1.2.1__tar.gz → 1.3.0__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-1.2.1 → pydantic_ai-1.3.0}/PKG-INFO +6 -6
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/README.md +1 -1
- pydantic_ai-1.3.0/tests/cassettes/test_temporal/test_web_search_agent_run_in_workflow.yaml +151 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/conftest.py +3 -11
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/evals/test_dataset.py +22 -0
- pydantic_ai-1.3.0/tests/models/cassettes/test_bedrock/test_bedrock_model_stream_empty_text_delta.yaml +66 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/test_bedrock.py +32 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/test_deepseek.py +37 -29
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/test_groq.py +0 -2
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/test_huggingface.py +29 -37
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/test_instrumented.py +45 -12
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/test_model.py +42 -6
- pydantic_ai-1.3.0/tests/models/test_model_request_parameters.py +111 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/test_openai.py +1 -1
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_anthropic.yaml +1 -1
- pydantic_ai-1.3.0/tests/providers/cassettes/test_gateway/test_gateway_provider_with_bedrock.yaml +50 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/test_gateway.py +70 -33
- pydantic_ai-1.3.0/tests/providers/test_ovhcloud.py +109 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/test_provider_names.py +16 -9
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/test_a2a.py +14 -6
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/test_agent.py +41 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/test_examples.py +1 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/test_logfire.py +105 -20
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/test_temporal.py +56 -3
- pydantic_ai-1.2.1/tests/models/test_model_request_parameters.py +0 -21
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/.gitignore +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/LICENSE +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/Makefile +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/pyproject.toml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/__init__.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/assets/dummy.pdf +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/assets/dummy.txt +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/assets/kiwi.png +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/assets/marcelo.mp3 +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/assets/product_name.txt +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/assets/small_video.mp4 +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_dbos/test_complex_agent_run.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_dbos/test_complex_agent_run_in_workflow.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_dbos/test_complex_agent_run_stream_in_workflow.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_dbos/test_dbos_agent_iter.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_dbos/test_dbos_agent_iter_in_workflow.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_dbos/test_dbos_agent_override_deps_in_workflow.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_dbos/test_dbos_agent_override_tools_in_workflow.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_dbos/test_dbos_agent_run.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_dbos/test_dbos_agent_run_in_workflow_with_toolsets.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_dbos/test_dbos_agent_run_stream.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_dbos/test_dbos_agent_run_sync.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_dbos/test_dbos_agent_run_sync_in_workflow.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_dbos/test_dbos_agent_with_dataclass_deps_as_dict.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_dbos/test_dbos_agent_with_hitl_tool.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_dbos/test_dbos_agent_with_hitl_tool_sync.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_dbos/test_dbos_agent_with_model_retry.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_dbos/test_dbos_agent_with_non_dict_deps.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_dbos/test_dbos_agent_with_unserializable_deps_type.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_dbos/test_dbos_model_stream_direct.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_dbos/test_multiple_agents.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_dbos/test_simple_agent_run_in_workflow.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_mcp/test_agent_with_server_not_running.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_mcp/test_agent_with_stdio_server.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_mcp/test_tool_returning_audio_resource.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_mcp/test_tool_returning_audio_resource_link.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_mcp/test_tool_returning_dict.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_mcp/test_tool_returning_error.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_mcp/test_tool_returning_image.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_mcp/test_tool_returning_image_resource.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_mcp/test_tool_returning_image_resource_link.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_mcp/test_tool_returning_multiple_items.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_mcp/test_tool_returning_none.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_mcp/test_tool_returning_str.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_mcp/test_tool_returning_text_resource.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_mcp/test_tool_returning_text_resource_link.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_mcp/test_tool_returning_unstructured_dict.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_prefect/test_complex_agent_run_in_flow.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_prefect/test_iter_in_flow.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_prefect/test_multiple_agents.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_prefect/test_prefect_agent_iter.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_prefect/test_prefect_agent_override_deps.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_prefect/test_prefect_agent_override_tools.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_prefect/test_prefect_agent_override_toolsets.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_prefect/test_prefect_agent_run.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_prefect/test_prefect_agent_run_stream.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_prefect/test_prefect_agent_run_stream_events.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_prefect/test_prefect_agent_run_sync.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_prefect/test_prefect_agent_with_hitl_tool.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_prefect/test_prefect_agent_with_hitl_tool_sync.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_prefect/test_prefect_agent_with_model_retry.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_prefect/test_prefect_agent_with_unserializable_deps.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_prefect/test_run_stream_in_flow.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_prefect/test_run_sync_in_flow.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_prefect/test_simple_agent_run_in_flow.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_settings/test_stop_settings[anthropic].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_settings/test_stop_settings[bedrock].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_settings/test_stop_settings[cohere].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_settings/test_stop_settings[gemini].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_settings/test_stop_settings[google].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_settings/test_stop_settings[groq].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_settings/test_stop_settings[mistral].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_settings/test_stop_settings[openai].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_temporal/test_complex_agent_run.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_temporal/test_complex_agent_run_in_workflow.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_temporal/test_complex_agent_run_stream_in_workflow.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_temporal/test_logfire_plugin.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_temporal/test_multiple_agents.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_temporal/test_simple_agent_run_in_workflow.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_temporal/test_temporal_agent_iter.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_temporal/test_temporal_agent_override_deps_in_workflow.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_temporal/test_temporal_agent_run.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_temporal/test_temporal_agent_run_stream.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_temporal/test_temporal_agent_run_stream_events.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_temporal/test_temporal_agent_run_sync.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_temporal/test_temporal_agent_sync_tool_activity_disabled.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_temporal/test_temporal_agent_with_dataclass_deps_as_dict.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_temporal/test_temporal_agent_with_hitl_tool.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_temporal/test_temporal_agent_with_model_retry.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_temporal/test_temporal_agent_with_non_dict_deps.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/cassettes/test_temporal/test_temporal_agent_with_unserializable_deps_type.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/evals/__init__.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/evals/test_evaluator_base.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/evals/test_evaluator_common.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/evals/test_evaluator_context.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/evals/test_evaluator_spec.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/evals/test_evaluators.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/evals/test_llm_as_a_judge.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/evals/test_otel.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/evals/test_render_numbers.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/evals/test_reporting.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/evals/test_reports.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/evals/test_utils.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/evals/utils.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/example_modules/README.md +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/example_modules/bank_database.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/example_modules/fake_database.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/example_modules/mcp_server.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/example_modules/weather_service.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/ext/__init__.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/ext/test_langchain.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/graph/__init__.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/graph/test_file_persistence.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/graph/test_graph.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/graph/test_mermaid.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/graph/test_persistence.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/graph/test_state.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/graph/test_utils.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/import_examples.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/json_body_serializer.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/mcp_server.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/__init__.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_anthropic/test_anthropic_code_execution_tool.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_anthropic/test_anthropic_code_execution_tool_stream.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_anthropic/test_anthropic_memory_tool.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_empty_message_on_history.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_instructions.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_from_other_model.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_redacted.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_redacted_stream.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_stream.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_web_search_tool_stream.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_anthropic/test_anthropic_output_tool_with_thinking.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output_multiple.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_anthropic/test_anthropic_server_tool_pass_history_to_another_provider.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_anthropic/test_anthropic_server_tool_receive_history_from_another_provider.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_anthropic/test_anthropic_text_output_function.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_anthropic/test_anthropic_text_parts_ahead_of_built_in_tool_call.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_anthropic/test_anthropic_tool_output.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_anthropic/test_anthropic_tool_with_thinking.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_anthropic/test_anthropic_web_search_tool.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_anthropic/test_anthropic_web_search_tool_stream.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_anthropic/test_document_binary_content_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_anthropic/test_document_url_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_anthropic/test_extra_headers.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_anthropic/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_anthropic/test_image_url_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_anthropic/test_image_url_input_invalid_mime_type.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_anthropic/test_multiple_parallel_tool_calls.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_anthropic/test_text_document_url_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_anthropic_tool_with_thinking.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_empty_system_prompt.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_model.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_anthropic_model_without_tools.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_guardrail_config.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_instructions.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_iter_stream.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_max_tokens.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_other_parameters.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_performance_config.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_retry.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_stream.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_structured_output.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_anthropic.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_deepseek.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_from_other_model.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_redacted.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_redacted_stream.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_stream.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_top_p.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_bedrock/test_bedrock_multiple_documents_in_history.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_bedrock/test_document_url_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_bedrock/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_bedrock/test_image_url_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_bedrock/test_text_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_bedrock/test_text_document_url_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_bedrock/test_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_bedrock/test_video_url_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_cohere/test_cohere_model_instructions.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_cohere/test_cohere_model_thinking_part.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_cohere/test_request_simple_success_with_vcr.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_part.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_stream.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_download_item/test_download_item_application_octet_stream.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_download_item/test_download_item_audio_mpeg.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_download_item/test_download_item_no_content_type.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini/test_document_url_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_false.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_true.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini/test_gemini_drop_exclusive_maximum.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini/test_gemini_exclusive_minimum_and_maximum.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini/test_gemini_model_instructions.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini/test_gemini_model_thinking_part.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini/test_gemini_native_output.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini/test_gemini_native_output_multiple.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini/test_gemini_prompted_output.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_multiple.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_with_tools.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini/test_gemini_text_output_function.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini/test_gemini_tool_config_any_with_tool_without_args.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini/test_gemini_tool_output.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini/test_gemini_youtube_video_url_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini/test_image_url_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini/test_labels_are_ignored_with_gla_provider.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini/test_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini/test_video_url_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini_vertex/test_labels.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl (gs)].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl (gs)].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl (gs)].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (YouTube)].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (gs)].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_gemini_vertex/test_url_input_force_download.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_builtin_tools_with_other_tools.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_image_and_text_output.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_image_generation.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_image_generation_stream.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_image_generation_with_text.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_image_or_text_output.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_builtin_code_execution_stream.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_code_execution_tool.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_document_url_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_empty_assistant_response.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_empty_user_prompt.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_image_url_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_instructions.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_iter_stream.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_max_tokens.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_multiple_documents_in_history.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_receive_web_search_history_from_another_provider.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_retry.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_safety_settings.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_server_tool_receive_history_from_another_provider.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_stream.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_structured_output.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_text_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_text_document_url_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_thinking_config.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_thinking_part.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_thinking_part_from_other_model.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_thinking_part_iter.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_top_p.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_url_context_tool.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_usage_limit_exceeded.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_usage_limit_not_exceeded.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_vertex_labels.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_vertex_provider.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input_with_vendor_metadata.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_video_url_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_web_search_tool.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_web_search_tool_stream.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_model_youtube_video_url_input_with_vendor_metadata.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_multiple_images.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_native_output.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_native_output_multiple.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_prompted_output.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_prompted_output_multiple.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_prompted_output_with_tools.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_text_output_function.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_timeout.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_tool_config_any_with_tool_without_args.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_tool_output.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl (gs)].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl (gs)].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl (gs)].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (YouTube)].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (gs)].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_url_input_force_download.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_vertexai_image_generation.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_google/test_google_vertexai_model_usage_limit_exceeded.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_groq/test_extra_headers.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_groq/test_groq_model_instructions.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_groq/test_groq_model_thinking_part.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_groq/test_groq_model_thinking_part_iter.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_groq/test_groq_model_web_search_tool.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_groq/test_groq_model_web_search_tool_stream.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_groq/test_groq_native_output.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_groq/test_groq_prompted_output.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_groq/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_groq/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_groq/test_image_url_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_groq/test_tool_regular_error.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_groq/test_tool_use_failed_error.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_groq/test_tool_use_failed_error_streaming.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_huggingface/test_hf_model_instructions.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_huggingface/test_hf_model_thinking_part.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_huggingface/test_hf_model_thinking_part_iter.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_huggingface/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_huggingface/test_image_url_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[Qwen-Qwen2.5-72B-Instruct].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[deepseek-ai-DeepSeek-R1-0528].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[meta-llama-Llama-3.3-70B-Instruct].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_huggingface/test_request_simple_success_with_vcr.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_huggingface/test_request_simple_usage.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_huggingface/test_simple_completion.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_huggingface/test_stream_completion.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_mistral/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_mistral/test_mistral_model_instructions.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part_iter.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_model_names/test_known_model_names.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_audio_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_compatible_api_with_tool_calls_without_id.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_document_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_document_as_binary_content_input_with_tool.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_document_url_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_extra_headers.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_image_url_input_force_download.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_image_url_input_force_download_response_api.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_image_url_tool_response.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_invalid_response.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4.5-preview].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4o-mini].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_max_completion_tokens[o3-mini].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_multiple_agent_tool_calls.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_openai_audio_url_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_openai_instructions.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_openai_instructions_with_tool_calls_keep_instructions.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_openai_model_cerebras_provider.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_openai_model_cerebras_provider_harmony.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_openai_model_cerebras_provider_qwen_3_coder.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_openai_model_settings_temperature_ignored_on_gpt_5.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_openai_model_thinking_part.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_openai_model_without_system_prompt.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_openai_native_output.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_openai_native_output_multiple.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[developer].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[system].yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_openai_prompted_output.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_openai_prompted_output_multiple.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_openai_text_output_function.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_openai_tool_output.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_openai_web_search_tool.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_openai_web_search_tool_model_not_supported.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_openai_web_search_tool_with_user_location.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_reasoning_model_with_temperature.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_system_prompt_role_o1_mini.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_text_document_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_text_document_url_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_text_response.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_user_id.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai/test_valid_response.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_audio_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_native_output.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_native_output_multiple.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_previous_response_id.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_previous_response_id_auto_mode.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_code_execution_return_image.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_code_execution_return_image_stream.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_url_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_history_with_combined_tool_call_id.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_and_text_output.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_jpeg.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_stream.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_tool_without_image_output.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_with_native_output.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_with_prompted_output.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_with_tool_output.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_with_tools.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_or_text_output.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_url_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools_web_search.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_http_error.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_instructions.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_retry.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response_with_tool_call.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_thinking_part.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_stream.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_with_invalid_region.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_with_user_location.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_multiple_images.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_non_reasoning_model_no_item_ids.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_output_type.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_effort.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_generate_summary.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_stream.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_streaming_usage.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_system_prompt.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_text_document_url_input.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_part_from_other_model.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_part_iter.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_with_code_execution_tool.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_with_code_execution_tool_stream.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_with_modified_history.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_with_tool_calls.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_verbosity.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_prompted_output.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_prompted_output_multiple.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_reasoning_model_with_temperature.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_text_output_function.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/cassettes/test_openai_responses/test_tool_output.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/mock_async_stream.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/mock_openai.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/test_anthropic.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/test_cohere.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/test_download_item.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/test_fallback.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/test_gemini.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/test_gemini_vertex.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/test_google.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/test_mcp_sampling.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/test_mistral.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/test_model_function.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/test_model_names.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/test_model_settings.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/test_model_test.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/models/test_openai_responses.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/parts_from_messages.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/__init__.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/cassettes/test_azure/test_azure_provider_call.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_google_vertex.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_groq.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_openai.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_openai_responses.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/cassettes/test_google_vertex/test_vertexai_provider.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/cassettes/test_heroku/test_heroku_model_provider_claude_3_7_sonnet.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/cassettes/test_openrouter/test_openrouter_with_google_model.yaml +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/test_anthropic.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/test_azure.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/test_bedrock.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/test_cerebras.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/test_cohere.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/test_deepseek.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/test_fireworks.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/test_github.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/test_google_gla.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/test_google_vertex.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/test_grok.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/test_groq.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/test_heroku.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/test_huggingface.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/test_litellm.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/test_mistral.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/test_moonshotai.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/test_nebius.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/test_ollama.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/test_openai.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/test_openrouter.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/test_together.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/providers/test_vercel.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/test_ag_ui.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/test_builtin_tools.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/test_cli.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/test_dbos.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/test_deps.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/test_direct.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/test_format_as_xml.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/test_function_schema.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/test_history_processor.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/test_json_body_serializer.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/test_live.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/test_mcp.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/test_messages.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/test_parts_manager.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/test_prefect.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/test_settings.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/test_streaming.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/test_tenacity.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/test_thinking_part.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/test_tools.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/test_toolsets.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/test_usage_limits.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/test_utils.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/typed_agent.py +0 -0
- {pydantic_ai-1.2.1 → pydantic_ai-1.3.0}/tests/typed_graph.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pydantic-ai
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.3.0
|
|
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
|
|
@@ -26,15 +26,15 @@ Classifier: Topic :: Internet
|
|
|
26
26
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
27
27
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
28
28
|
Requires-Python: >=3.10
|
|
29
|
-
Requires-Dist: pydantic-ai-slim[ag-ui,anthropic,bedrock,cli,cohere,evals,google,groq,huggingface,logfire,mcp,mistral,openai,retries,temporal,vertexai]==1.
|
|
29
|
+
Requires-Dist: pydantic-ai-slim[ag-ui,anthropic,bedrock,cli,cohere,evals,google,groq,huggingface,logfire,mcp,mistral,openai,retries,temporal,vertexai]==1.3.0
|
|
30
30
|
Provides-Extra: a2a
|
|
31
31
|
Requires-Dist: fasta2a>=0.4.1; extra == 'a2a'
|
|
32
32
|
Provides-Extra: dbos
|
|
33
|
-
Requires-Dist: pydantic-ai-slim[dbos]==1.
|
|
33
|
+
Requires-Dist: pydantic-ai-slim[dbos]==1.3.0; extra == 'dbos'
|
|
34
34
|
Provides-Extra: examples
|
|
35
|
-
Requires-Dist: pydantic-ai-examples==1.
|
|
35
|
+
Requires-Dist: pydantic-ai-examples==1.3.0; extra == 'examples'
|
|
36
36
|
Provides-Extra: prefect
|
|
37
|
-
Requires-Dist: pydantic-ai-slim[prefect]==1.
|
|
37
|
+
Requires-Dist: pydantic-ai-slim[prefect]==1.3.0; extra == 'prefect'
|
|
38
38
|
Description-Content-Type: text/markdown
|
|
39
39
|
|
|
40
40
|
<div align="center">
|
|
@@ -78,7 +78,7 @@ We built Pydantic AI with one simple aim: to bring that FastAPI feeling to GenAI
|
|
|
78
78
|
[Pydantic Validation](https://docs.pydantic.dev/latest/) is the validation layer of the OpenAI SDK, the Google ADK, the Anthropic SDK, LangChain, LlamaIndex, AutoGPT, Transformers, CrewAI, Instructor and many more. _Why use the derivative when you can go straight to the source?_ :smiley:
|
|
79
79
|
|
|
80
80
|
2. **Model-agnostic**:
|
|
81
|
-
Supports virtually every [model](https://ai.pydantic.dev/models/overview) and provider: OpenAI, Anthropic, Gemini, DeepSeek, Grok, Cohere, Mistral, and Perplexity; Azure AI Foundry, Amazon Bedrock, Google Vertex AI, Ollama, LiteLLM, Groq, OpenRouter, Together AI, Fireworks AI, Cerebras, Hugging Face, GitHub, Heroku, Vercel, Nebius. If your favorite model or provider is not listed, you can easily implement a [custom model](https://ai.pydantic.dev/models/overview#custom-models).
|
|
81
|
+
Supports virtually every [model](https://ai.pydantic.dev/models/overview) and provider: OpenAI, Anthropic, Gemini, DeepSeek, Grok, Cohere, Mistral, and Perplexity; Azure AI Foundry, Amazon Bedrock, Google Vertex AI, Ollama, LiteLLM, Groq, OpenRouter, Together AI, Fireworks AI, Cerebras, Hugging Face, GitHub, Heroku, Vercel, Nebius, OVHcloud. If your favorite model or provider is not listed, you can easily implement a [custom model](https://ai.pydantic.dev/models/overview#custom-models).
|
|
82
82
|
|
|
83
83
|
3. **Seamless Observability**:
|
|
84
84
|
Tightly [integrates](https://ai.pydantic.dev/logfire) with [Pydantic Logfire](https://pydantic.dev/logfire), our general-purpose OpenTelemetry observability platform, for real-time debugging, evals-based performance monitoring, and behavior, tracing, and cost tracking. If you already have an observability platform that supports OTel, you can [use that too](https://ai.pydantic.dev/logfire#alternative-observability-backends).
|
|
@@ -39,7 +39,7 @@ We built Pydantic AI with one simple aim: to bring that FastAPI feeling to GenAI
|
|
|
39
39
|
[Pydantic Validation](https://docs.pydantic.dev/latest/) is the validation layer of the OpenAI SDK, the Google ADK, the Anthropic SDK, LangChain, LlamaIndex, AutoGPT, Transformers, CrewAI, Instructor and many more. _Why use the derivative when you can go straight to the source?_ :smiley:
|
|
40
40
|
|
|
41
41
|
2. **Model-agnostic**:
|
|
42
|
-
Supports virtually every [model](https://ai.pydantic.dev/models/overview) and provider: OpenAI, Anthropic, Gemini, DeepSeek, Grok, Cohere, Mistral, and Perplexity; Azure AI Foundry, Amazon Bedrock, Google Vertex AI, Ollama, LiteLLM, Groq, OpenRouter, Together AI, Fireworks AI, Cerebras, Hugging Face, GitHub, Heroku, Vercel, Nebius. If your favorite model or provider is not listed, you can easily implement a [custom model](https://ai.pydantic.dev/models/overview#custom-models).
|
|
42
|
+
Supports virtually every [model](https://ai.pydantic.dev/models/overview) and provider: OpenAI, Anthropic, Gemini, DeepSeek, Grok, Cohere, Mistral, and Perplexity; Azure AI Foundry, Amazon Bedrock, Google Vertex AI, Ollama, LiteLLM, Groq, OpenRouter, Together AI, Fireworks AI, Cerebras, Hugging Face, GitHub, Heroku, Vercel, Nebius, OVHcloud. If your favorite model or provider is not listed, you can easily implement a [custom model](https://ai.pydantic.dev/models/overview#custom-models).
|
|
43
43
|
|
|
44
44
|
3. **Seamless Observability**:
|
|
45
45
|
Tightly [integrates](https://ai.pydantic.dev/logfire) with [Pydantic Logfire](https://pydantic.dev/logfire), our general-purpose OpenTelemetry observability platform, for real-time debugging, evals-based performance monitoring, and behavior, tracing, and cost tracking. If you already have an observability platform that supports OTel, you can [use that too](https://ai.pydantic.dev/logfire#alternative-observability-backends).
|
|
@@ -0,0 +1,151 @@
|
|
|
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
|
+
- '336'
|
|
12
|
+
content-type:
|
|
13
|
+
- application/json
|
|
14
|
+
host:
|
|
15
|
+
- api.openai.com
|
|
16
|
+
method: POST
|
|
17
|
+
parsed_body:
|
|
18
|
+
include:
|
|
19
|
+
- reasoning.encrypted_content
|
|
20
|
+
input:
|
|
21
|
+
- content: In one sentence, what is the top news story in my country today?
|
|
22
|
+
role: user
|
|
23
|
+
model: gpt-5
|
|
24
|
+
stream: false
|
|
25
|
+
tool_choice: auto
|
|
26
|
+
tools:
|
|
27
|
+
- search_context_size: medium
|
|
28
|
+
type: web_search
|
|
29
|
+
user_location:
|
|
30
|
+
city: Mexico City
|
|
31
|
+
country: MX
|
|
32
|
+
type: approximate
|
|
33
|
+
uri: https://api.openai.com/v1/responses
|
|
34
|
+
response:
|
|
35
|
+
headers:
|
|
36
|
+
alt-svc:
|
|
37
|
+
- h3=":443"; ma=86400
|
|
38
|
+
connection:
|
|
39
|
+
- keep-alive
|
|
40
|
+
content-length:
|
|
41
|
+
- '12089'
|
|
42
|
+
content-type:
|
|
43
|
+
- application/json
|
|
44
|
+
openai-organization:
|
|
45
|
+
- pydantic-28gund
|
|
46
|
+
openai-processing-ms:
|
|
47
|
+
- '45591'
|
|
48
|
+
openai-project:
|
|
49
|
+
- proj_dKobscVY9YJxeEaDJen54e3d
|
|
50
|
+
openai-version:
|
|
51
|
+
- '2020-10-01'
|
|
52
|
+
strict-transport-security:
|
|
53
|
+
- max-age=31536000; includeSubDomains; preload
|
|
54
|
+
transfer-encoding:
|
|
55
|
+
- chunked
|
|
56
|
+
parsed_body:
|
|
57
|
+
background: false
|
|
58
|
+
billing:
|
|
59
|
+
payer: developer
|
|
60
|
+
created_at: 1760537022
|
|
61
|
+
error: null
|
|
62
|
+
id: resp_0cc772278fa4f4140068efa9be8878819ca691ebcbe9f1f6be
|
|
63
|
+
incomplete_details: null
|
|
64
|
+
instructions: null
|
|
65
|
+
max_output_tokens: null
|
|
66
|
+
max_tool_calls: null
|
|
67
|
+
metadata: {}
|
|
68
|
+
model: gpt-5-2025-08-07
|
|
69
|
+
object: response
|
|
70
|
+
output:
|
|
71
|
+
- encrypted_content: gAAAAABo76nsGZ3D61NVA0XbnShNHmz5T4RonYmRGx_pRGkEbVDw7m4Ld84NA0js4svXie5FHgTxnkjohBfv597Y9YkQPDKDKkT80tQ41fo4SYkJ4r3BUtgD-DNrpssBBlK_uT-FfWeJlwTTvz6hfl1jP8NK54ZThlLzeSyhoDkQoiJf7d7rmjro49oy8owOCGlod1oiBBcZoF4zXL04lZXeOmrN40e6zIrEXGIb-iC2NL7O2R3GbipQcbq6zy2RpIbmjgmXRTWjtaMmWcJwry4oqYsud2UHojpkhXeN-0Yh4gPfzWbgvYDO47Lc48t5UkNDuBLXezNyRX_Pmlocn-h9RKNEdkq1iZau4UyY_1Fo8LKm0hQuE4x4ZKzRed2KJM4YjwSomtcGshDGKmZw94kabHY9tDI6y5-mWFhHqvjZt50xJukx2iOC6KKKk0iKiqcCeNb4r2K0G_xhLIS-sjbG9rv_762G3AiZ041xEwbStrqovRuTu52YV6b70gnuzvEG0QF9hToUpbZZQx1prAIE1WILXAZrDxvHB2czq2PF3WP0QGWdbJpO3ZSm9osjX1qqNgoiOArBUYtOQUbYM7JtLz92Es53GVeIXlHSlE_VT92ISO6n8UyAGLYuWLd-nTELBbsjNWmOo1LFpUsi7h0rVR0pbs2jTUDRLCn74ucVxYX45dTx0P-OKfNrKDQNaRCyvi-oCFdrJUc-ecm-EaVoqz0b63HHzhKNXFsmPeFZl5gtGnXARqXrbcBgel-wviXlMLt8KaWWMrEU_yq8KjACNeQy8POZsimzWT95oMAjD_J35JgeXajkYIFHuh1ZRb0awKdXPCUp6kR-nL_cBZco6nZARImw-9VR7527KT30aGvPhSYCrtqP9QXmI94IB9mYvGsCCj1ooQ3JW4nzvThJ3KN9xNZaMkvE_pORulsxPLfKfELoy7i74HWBZ7X5_7zLB-Rv-Zj58YJiFtpVYGSzKd2UfbI8GvYaakGFfN2LqzG4k2UA2rIh97nbMfbdVtUL0PuINsHc2Qr1aHbeaiHavya4QCGt1w0cds37gy06dqdL5Hny2NzhSekkUK2vDGV-evUpIkDeK3hY93NQYgwppnmdvMDYOMUl_VnLH5m-3FIW0bTJkxC2zYR4A1lkD_xhawH2KD5lrZS4-qttoDdfWceV6PIW3J7EnP0j9vq5Twkx9phCXWOL0-_7fEKwwmC2VwVvf43rbqbF5ZQpLl_nNiicJX4nmV_umniCS_hUjmHTHHyagnJjUzD7ZHFjF7CenXS4uag4TlNEozrxEv4vcZtWd_A-zSpqYLdGty2Zp16nkeq2DhF137AZTohRpDttSis-oh18GQzgvyDb3kUyb23CHcH9DZwScI4QDiDjoE94mzOe4_MjSyrY4d4stLYr5DYlUc_zE3jWp10QiNz8Yz3K4sm8aM_cPteHRuwGBPmjYWKoNwhsLEiHP3aNE-MYpkcV4oAJk8MR3NU3asRRZUD5CNj66gkRlpcsd6dTUPSJISIZM415mE7uG8HF0inxGn_VXSIFxV7PfjdIs6WE58dwEEe7QXTpxWjkuCCykg43znRi0G3Tscuq8oU7VUe5dTAfGDA-nwkroCFWyfpHT_VX92l4BFM6Pm9GF1XJ3_cpbp_TMkrLNwkklGeZSbghTU0RqKdGfffyrdZNqRW16BESjHc7Z8SsC8QhLjGvavyFHJOBB3vgwRAFDskmFlhTKMAsJqaq_tqJ550UrrRTmjJ1sH3gOozKgryOU9i7w2rlnbn24YkA9yCvIVSaB7bW8_Z0TbhoWY_0D25OQqc8pgOGECEHDzGOX_k5wSevf6WEdxoL9wY0PpNxGz_TwA0DMOd4vModAeCGDujQSfPS7PDUm9qtZMZtwyjZ4PKQ_K09-sKg7X4PUQ9DAdygNmHQCjK0iqY-fhcJwkApX1ichrxy6M9kA1EM8rO5fD4pTaRLoqNVutc1sUBq93DXMEjE73UTCfrygIOK2brw4P1LBNQe_CP3J65obJQ8tMTXyemrnLPYIzw=
|
|
72
|
+
id: rs_0cc772278fa4f4140068efa9bf0dcc819ca630d7697c77a632
|
|
73
|
+
summary: []
|
|
74
|
+
type: reasoning
|
|
75
|
+
- action:
|
|
76
|
+
query: Mexico top news October 15, 2025
|
|
77
|
+
type: search
|
|
78
|
+
id: ws_0cc772278fa4f4140068efa9c5aa14819c871c50351e98af40
|
|
79
|
+
status: completed
|
|
80
|
+
type: web_search_call
|
|
81
|
+
- encrypted_content: gAAAAABo76nsliyRJLQ8_6svrujSylQVBRqPDxfWb2I2yr61HB3Rvh8mkk4ZPdzVyktR-gyzPkY-X5VtSV3rjjMCRvU6nGi8j9MmS-pULY8splSAdXCTcxm5LoH6laEAtugW0p6HlxkaehV4RLM2RNqiFbx3KMciX3JTkg9AJcchLtGiSvaV4KrI6gO7BoMY_L9lPsTAOJMCWmD6eK3S13Rc61XPEsUhLq7W4h_mz-A_y6K5Hehqu4sEzLlWgAI3bVogiULK0UYQqgmRkL5VhZCw3RP7lqV_3eDD-7hJEgH7tnW3aYkSt-6f0PmuDoDdF5UOdhgjYLyr2KGyXokoRVF310d4b7OEJsFycF4-mqtD8-r6RxjmSJVp95Oye-3X2HhXKwanOhJbtymEa77qy2hIC_8p222na1_wBo9awrBaq8T1cyGauiMEEbVcqVkhwE3mQzGYz2EzbvM-KZ7fguzOijBP3kCaJV3mF4qAVkYG_VDn1jEPd-s1CW34HwZevytQBNizpEJwysAqNHbW6rUgXQiq8gkL3N0MIGffabwI1ZckYikOpQrUw7C9kgVMgy_8jr3nlJ3c3nqLwM5dxB95orArSk-GWyk7BRa_N6htBB2xwrmcbwO8lSF5LCcW5zc6N3O24Vne3YeDVB9rfVMrOwk0pKukSuYmiZpws5U4Yuc3ZFHJfpU-Nswbl4SrjxZATG5Eyzo-ecUMIW-MsifLMwLadoxaq3nafpwcQhE4AH4U3Rgi_NOeHuP6iMeStRxUEi_Q7cRASg7TGZgRYAXVmRjaB0X_LGjA_oITzmfOKewUxG2SwtTi3X0-_dxMzQXVNvBp6nKv3THhnM-qAp9rXowmseH-WRqvsuZR0rwuYHig1nLA_gibGmWJ9VwPrhasxmA6kc-PlGkvoYE59lLL3HQYUzNuJsosSRtHix7gcmkpASBIJlPzzvo_10aE9peHNoam78vm8QcFxKA6Lrynva5qCndxXGN7Phh13mkFKmYYGwdufaHDEpeNH0qAWv2GsVHpHKENe0Ll2XqJNeK_lF-zvzFBh0DeRfVy3Lq3G6ZtNvV_sJslzcNQzqqU7gRJEsnzC-bfqJsTGc1NWbYG86OgMV9FmsUohGlDVNIMxAWwtEQXJitWR7UQpei528hz6pJj6uKzrTqoNXAUVjJcQz5DW9wR8OYwdl95FzFHGmqKn8cPTVEvnTV9ISCHPNJ4Hy6_qb2OaUh624h51eo8fvOye_qBFE4B0nnrhbmdtN9PYoxdcF_hvk0Dxt5rvOmiqeTlxueE
|
|
82
|
+
id: rs_0cc772278fa4f4140068efa9c91ae0819cb57bf002b036ffcb
|
|
83
|
+
summary: []
|
|
84
|
+
type: reasoning
|
|
85
|
+
- action:
|
|
86
|
+
query: inundaciones Mexico octubre 2025 muertos desaparecidos Veracruz Hidalgo Puebla 15 de octubre
|
|
87
|
+
type: search
|
|
88
|
+
id: ws_0cc772278fa4f4140068efa9cb9a94819c86a1054697faa9d6
|
|
89
|
+
status: completed
|
|
90
|
+
type: web_search_call
|
|
91
|
+
- encrypted_content: gAAAAABo76nsdJIaRBHwtMtyHUET6TXVN2QSC9B3268qye-aJa-3t_U3_I8F5URYG19B9IuVC0RDpe2iBHtKklE6KIE_Ugzg57cRDo0wiTQxRDXYwjFxKPXCNyRQHYHkbPh9Dohk8nRcNt9mARzOpwgB6qknrb8odOOhyqe3q8bZ7aAqTh-qimwxkSssyAb-AOjYGAwSXmr2GErt284wA9jughihwSsiRxBmUSwnMx2Tcg8h1Kr4i2lnGcBPgWX_0bCpXGZY4A_JItQv-6Z0erPq5R9xPiYYlMDApTbBBOvFVCUXWuDx8XeAGYm0V18fJxXiEHuktll_Tj7o9c8GDbLF6V_hSsUsPAIQ0RCoKJ6hP4ZgE5CA1ml3WQa7IbPHBU-wKgHcKhwD5eBsRkE4DFfBx7zKTnZtB8FghGYYKkx4Ww7VZVqifoO8JAMvBsmZT3CWp6z69hCg4BOaXnfTE2llfA2B4b0oBTrCl9c4qG5dfx_ELVfRxOJyr8zI_Rxw_xj-fYgCrFb8xfa8XCvbV7thZMAac0eZyq8M9PGRbjvmKn7jNPYK-c2a46Ia6t_s93xxxUtTsCr-rvn2gKTMWm9BPTWqpqkAc2ZTCYxgT7QSs77IAOQuk_9OHDNBM-h0ujCYfzISsieGSnwIwMS3hfg9qiezUcNcwHOHxH7n3T2JfNRa2k37sJmxrFJOPyMezEqar1-XQvAEtXwNcNbYIykNZ4s8G3lCJAnvEzoRzCAmiiAndtejPlVrSZUhsWazjPcDnZ458-1nnMfb-vGK0Cybz3EdNWMFnWN5bjLIP3lc_wLPa_dWSz1Dm_bTckJWKAujV1jQITft04Nlo4i9vLW5vWb7Jsml4fiSYtvuALQkNzhOlMbdKvrL29UFobkfCB1hX4Cgj-Hkn7P5WjeYtxKXkOb171JGIEav5qQcfbImOuFxhg_7EUbaefIyGa1J2eGb7DRCcmbqnur5hvzMzPGNqHxWvEunVxf9ZvUEXsPoNPyC2Jkot_ntLSlwRtuuMqu9teK6NfWi0qCJeqbhEN-OWDpFtrmSEYLr1FNS5_XM6_VZ10o1GRW8notAm5RVdn7zDvjs_s5cXv4efs0UanOOAS6e_OIJeX7VHdiKLnHLXxZ-adp5NR2kKIw0hgtvcrCR7KHvr4itOny8zy_7EfeYgX8B66favNVeu6JLGEVIOs1bN3_evQYUyRPJAn3FwM_DIUZqQ1xJVewm1RAxvaENoT_gh3pib4vdjXxeGjJg7VsAkPpiHf0TSYvGKiAtdUuUHNfNv8X5MGuh40ST8ji-UHeWkUe8fzcVoypPVNApyO9bET3RgirucglYbObm3WwucxyZDkJC9nYb1LptN6K3xvJ8a97njRCnzjE4Z0SfOtRBotblGo0IN7cCVI-SJrOlXXdvm8PUOOofKmzM9Y-Seo_Vapq3NBfLGZar7Sg1RtHXTXpJABZZ1HNgfvmw0qqKka-cUyS2qByP6d1ZRc2MTAofNcJXEiiBF62f1JXK0yMwKyCacPBQ26J7xHvmDtz-lAZGO6n8GvWJy2UkGthYZLIHTfyKfc46t74ZunD1daW5_QK7dCMMdXylK8lQaSBtK8UIzlbDcT7cIeoO-9iGSEMj623RjwMqpAJLYW8cuoccnTnH3cJ0032hhuaTyvPnW98_2QdzERSY6booWeLI5QI4yWcmJgs8gnhQC1-UEZrZ-Y3_344Xv8t2Dk-ihlHMN0aZ5MpBkT_FXqspXn5a6HIVLEhdtckz1LWK6ZZxcMDBVZAy5pqTmIs_Ro303y1_5Z_oiKSl-ISCkUhCGCCb5JpLozG5tJZTqDij8u91L4c3fgzxs2Myk-Dk8eiAtNyR1kJTPLzFTqHrFvlTXbU5UaHqBjGLhlVXY-9H7vRB4Ssk0NWyQY5jv1L2jnhy64l6KtNBqY827HVOnsaT-XWlM4McnFT1MJ-qO41NzR-gTZva-KzjDgVj50_MBmxeuBLsnDVq26Iw2d9OQpyzo_qiN_Fs2G9zpaUr84-W9mNsoV3TljiQk9-D1xdy4ZXJ7oicW1Ah-Ua4lNGI8wKHujDDX-sw0FaEQfKKPrN4Ou_lXAStakNhnvn2C3sbPlUk6Mie52ky1Pyq9L3SMwFtNa_Sx0imAANBAqekA6BMwc_Q_Y8jgmtZatBAibaWfWfcCyWNy832S6wJ5L0_fOhYVwT4PMvOw9AIwQbTSAJtuLN7zxZOv2Qw5_UnatJR6MgXbQc0BrmWI_FGuZdOuv2TMGKZkV9ynaZ5L-Dk0P90lpZwNmpbddh1y7TQNY6Os6YPwwcyPSMgTD1fY3eJPWDEv8OxRIrFJeth_tJMb-IX2fozD7ZAXUXuEFqtCFZ7yqoO-AbW8rgLWU5ILiJJk7neHSyWrsiDf0eyILU-tC1QoGuP-Md5hehvrobjVQgkARdzIUAy_8RIeG956NoG1nqIM-5tu0A8xjv2rBf5vTw5p6rbtCiQtTacMVrprXLz-p23XqrOAZuEvhc7mMJBwEJcGq8w12oil-oakW3gbHWzKWUb_6bLGYaI7uBjSH_HDtcU79uONBYGDKRG_eZa0EcupHQ8twVBNviyz2bSubTN4gWvjz4k1nHkmQBagFQzy6ogcCVldZVyLtib2TfMH64DVeEFBEM-aUKcs81R42r8aZjW_I3RFRGS8hodNs0Y1ZfkYms_kBNOZc3pw2iP4rtOLDWatSGfUWN8owiQETiOI2AD70HoXcVBmjyRpxheI_mBVz6YIxMzf0esd5U118NzOyxqfQ66EvmAzmN0iSrbR2Vucx4CojBzweQ0KoWn_HV4U3qjkdXcmdvncbTK18LPoOhS6z7BhEKXDhd1bhI1f5AyirZhqR8xvK0r6aeQdkL7OWyQoDWJM-CRtn0S4O3qucwNA1XFVPt5fF8rysehSjLN4GH0AAueDBc9_BGx0fQMsmpRjUO71W0P-C4pY-eYvUu60u6ng2YELowM7Poak8xWOsvlGqYuXj2s4Tuj6hJPeD6vPoUDaxfFPjMijSkpfASxJvNbE8DpftoPrfiXIG-LDfGIXiJISgDzBgTllf3cw1lhSYq51WfqcBaWsIvXWGGbvnfqE2bA7nRwNUBkmxd9NC38-DAAySadaHIBjsIgv7VEKKp841cvTQ4bB-8Fp1d7pZOvMsq4GjaKCQNfjNcWL87KyyJ-GonLExJStrdNGxwS_9AYNA-6KEdtz-V9YRFzbkHl4406ueOody8O7jvucmoyKFTU1S2yJ5Wbd1gNYA-6wV_II78hbI6dXjTEGvdbRWIKkTktnD6pgDhHjkdS6uzsTcUYTkj60SxMujKv2xlRevDANdgFDB0-zKkv0ntRINr5_CHmnLbW3NYAAyGQ9wOgvfNEMno0EVLQU9F596lscKSXAl4djL1F_GSSn80lb0ujdu77Xh130yORuio6SSF9DAXg1wYI8O0Il2nyJg-0DWTyy6mCG4zPmzyS6yRH64o4kOGmZBuOJSFvcF2Qy0h0h0xBvYhN9fBJh8AcjuYP9TWB8s8Z3KKYOXYlPTPlbN4BaowBVfmzG6_aJaDvUsT1bk9IruW4ENtwf6OxXs0nqEwQEGBYWDAmcdS5hESe7JuVQ1O2bLkg2fYl63VznOUIrYW5hbHMI6pZ3EMsuJD5ITzULCl-WlX_qmduuAKnnFbSzua4Rv6ZUOk_GC-BCIfcnro0RTJTna2hl8M-YP0g05v68zDFl4x1s1xsvii8VF4p_t6EGaPY00iUgB__4uWwdIkuywTAaLgvdtWonA7aCvEZr6a04ZyUD7jf6Acd1cwxkCe2Ed-GVd9f6vQcuXUwAwnuK_gsWsqLfPfA_9U3mxMABZVXjuLwxZlxGW1rxdRQZUdqeQvIBLVt3ozMyqu4mQfs0r4gaLUFff_qHkckNvbvJwUDquokNysr0e1matigksVRDUUQc5aXvR8KeQZKUvjQLh5Rv_gvUmkBO2pQQUJCG3IPQqf6lU1Y_86sxHVegaoZ52jbbEq32NO9gQ-3LlMPvmm-FTmdfaBxNZZ2GVHgjLdvmshTd3XrdrRlqXc2dwFsLbIi6Efg6Zy6Vr8HeZiHWtJjiNT6jurXE0aNkq3SSWHEW6tNcn1BXToFUI7R4vozxEzwQG9e-acnS6OZsRie5dDmQ02CXSlJYu8s8TwyXEhy3vmaGDrtVIXlBGdb-6lAjspALKC4I6k_6uwiv492gFe7usw9mvHgIe9b5y2h0z1VUZ1lr152G1Fw_2R-1C6RxwUPZuD3ZVSw5LvO18VApN4_jDwD6l6i9QcCAGgEtz5rSp1SfbYXpTCFd5ulbZAh0JgU_OUnK4QlXZL7vdfs0cKU43IQaDAwg2zJjKodk87JDoe6YmDfrFWZ_qkPWdfbVtvKOMg2bMqJVU0LbKGH3H_MKnQVnHH7UkcdTfu7wwbYIdddQHQPEzuzOwBTg9nz46nSKfZCIQ3FES6gP7bBDuw3IhwzZq30hAS0XPspU8OQuvAQcUcpjSYlKkNvWvw1ZaGE-wJsA2UgyUDeQ_gUAmvjEqXTkomk5EDiDWg4R7TMi3bzbVUylLcNOopOi_X6Quij0dWoV6tZJqKq8z1BJUeV7Dl9dcnN24MTQ4YFMV3r59zAD4_DBWkMorwfllcFB1-i3mq2RdtErHFay7BATssuoSvaVhZbfcc6OsqE6UcZTUr7ctBCKIpg5EJTAZRgZcUTUQMQYaJmCgBi5QY4UIf9oxxd8URQKz-nT2G9vKrCTRC7h2J2aG3RaM4TVYzJQUADkbj5ejVMTELy2JjG_LQLMLzd_yR4VeSOfn3RVbo_P7A5P0bOp4ftma8Qe5kDC2L2H252tNr2gU82ozygJdqi_2ZB_ladw5fojKVMe2w1dBg_g-c5HmJlIxWp0N_dj8hDTS_zC2J6X6zIFkhW9JTSRgVzdDJd8oZEGNtTbAo__R74yEHll9L52bRu68NTxrT4cQ4RIbA5dQUl0QgNwRr67roltQeWXj1eS47Pe070ntnScAgTCF8431lM2XiK1iPP6fbi23SWE6oD4JQaaAQkeHoBqjqPcTeoPSHLmpKkZS55e6XPlxbQp_exrt8yLJv9fs7wrfG0egRzJwIRd_H8vxCg7f65EUIIAyUp8TTaHpYWQJMmmWtAa035TcuwzRtswUYcWLZZWbqBB90m9EM9huFAmF6xJypAfjWFRm0Mtwh7AgqTTEuw6cnNw5lzGQKJqnP2kCiZ6gVb97A67qQZMOs_zDp8E68RgEzDIm14JEAKrIs0nI3VqrNyy0DGzyvn6TWZUAYqUdUGjchOYc_tj3_cr7_Icu1VWG48SNIlXMKHi0k09efcyTzfaaTXQS5UdlenHvFg9j1WO6oyORpaGbA3L5XUNwH1yX6d9wN8
|
|
92
|
+
id: rs_0cc772278fa4f4140068efa9d096c0819c99fea06cc2948069
|
|
93
|
+
summary: []
|
|
94
|
+
type: reasoning
|
|
95
|
+
- content:
|
|
96
|
+
- annotations:
|
|
97
|
+
- end_index: 281
|
|
98
|
+
start_index: 188
|
|
99
|
+
title: Landslides and flooding cut off 300 communities in Mexico with dozens dead and missing
|
|
100
|
+
type: url_citation
|
|
101
|
+
url: https://apnews.com/article/5d036e18057361281e984b44402d3b1b?utm_source=openai
|
|
102
|
+
logprobs: []
|
|
103
|
+
text: Severe floods and landslides across Veracruz, Hidalgo, and Puebla have cut off hundreds of communities and
|
|
104
|
+
left dozens dead and many missing, prompting a major federal emergency response. ([apnews.com](https://apnews.com/article/5d036e18057361281e984b44402d3b1b?utm_source=openai))
|
|
105
|
+
type: output_text
|
|
106
|
+
id: msg_0cc772278fa4f4140068efa9e8d5c0819caea9f8f22692335d
|
|
107
|
+
role: assistant
|
|
108
|
+
status: completed
|
|
109
|
+
type: message
|
|
110
|
+
parallel_tool_calls: true
|
|
111
|
+
previous_response_id: null
|
|
112
|
+
prompt_cache_key: null
|
|
113
|
+
reasoning:
|
|
114
|
+
effort: medium
|
|
115
|
+
summary: null
|
|
116
|
+
safety_identifier: null
|
|
117
|
+
service_tier: default
|
|
118
|
+
status: completed
|
|
119
|
+
store: true
|
|
120
|
+
temperature: 1.0
|
|
121
|
+
text:
|
|
122
|
+
format:
|
|
123
|
+
type: text
|
|
124
|
+
verbosity: medium
|
|
125
|
+
tool_choice: auto
|
|
126
|
+
tools:
|
|
127
|
+
- filters: null
|
|
128
|
+
search_context_size: medium
|
|
129
|
+
type: web_search
|
|
130
|
+
user_location:
|
|
131
|
+
city: Mexico City
|
|
132
|
+
country: MX
|
|
133
|
+
region: null
|
|
134
|
+
timezone: null
|
|
135
|
+
type: approximate
|
|
136
|
+
top_logprobs: 0
|
|
137
|
+
top_p: 1.0
|
|
138
|
+
truncation: disabled
|
|
139
|
+
usage:
|
|
140
|
+
input_tokens: 12594
|
|
141
|
+
input_tokens_details:
|
|
142
|
+
cached_tokens: 3200
|
|
143
|
+
output_tokens: 1150
|
|
144
|
+
output_tokens_details:
|
|
145
|
+
reasoning_tokens: 1088
|
|
146
|
+
total_tokens: 13744
|
|
147
|
+
user: null
|
|
148
|
+
status:
|
|
149
|
+
code: 200
|
|
150
|
+
message: OK
|
|
151
|
+
version: 1
|
|
@@ -14,7 +14,7 @@ from datetime import datetime
|
|
|
14
14
|
from functools import cached_property
|
|
15
15
|
from pathlib import Path
|
|
16
16
|
from types import ModuleType
|
|
17
|
-
from typing import TYPE_CHECKING, Any, TypeAlias
|
|
17
|
+
from typing import TYPE_CHECKING, Any, TypeAlias, cast
|
|
18
18
|
|
|
19
19
|
import httpx
|
|
20
20
|
import pytest
|
|
@@ -463,21 +463,13 @@ async def vertex_provider(vertex_provider_auth: None): # pragma: lax no cover
|
|
|
463
463
|
pytest.skip('Requires properly configured local google vertex config to pass')
|
|
464
464
|
|
|
465
465
|
try:
|
|
466
|
-
from google
|
|
467
|
-
|
|
468
|
-
from pydantic_ai.providers.google import GoogleProvider
|
|
466
|
+
from pydantic_ai.providers.google import GoogleProvider, VertexAILocation
|
|
469
467
|
except ImportError: # pragma: lax no cover
|
|
470
468
|
pytest.skip('google is not installed')
|
|
471
469
|
|
|
472
470
|
project = os.getenv('GOOGLE_PROJECT', 'pydantic-ai')
|
|
473
471
|
location = os.getenv('GOOGLE_LOCATION', 'global')
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
try:
|
|
477
|
-
yield GoogleProvider(client=client)
|
|
478
|
-
finally:
|
|
479
|
-
client.aio._api_client._httpx_client.close() # type: ignore
|
|
480
|
-
await client.aio._api_client._async_httpx_client.aclose() # type: ignore
|
|
472
|
+
yield GoogleProvider(project=project, location=cast(VertexAILocation, location))
|
|
481
473
|
|
|
482
474
|
|
|
483
475
|
@pytest.fixture()
|
|
@@ -1555,6 +1555,16 @@ async def test_evaluate_async_logfire(
|
|
|
1555
1555
|
'gen_ai.operation.name': {},
|
|
1556
1556
|
'n_cases': {},
|
|
1557
1557
|
'name': {},
|
|
1558
|
+
'logfire.experiment.metadata': {
|
|
1559
|
+
'type': 'object',
|
|
1560
|
+
'properties': {
|
|
1561
|
+
'averages': {
|
|
1562
|
+
'type': 'object',
|
|
1563
|
+
'title': 'ReportCaseAggregate',
|
|
1564
|
+
'x-python-datatype': 'PydanticModel',
|
|
1565
|
+
}
|
|
1566
|
+
},
|
|
1567
|
+
},
|
|
1558
1568
|
'task_name': {},
|
|
1559
1569
|
},
|
|
1560
1570
|
'type': 'object',
|
|
@@ -1563,6 +1573,18 @@ async def test_evaluate_async_logfire(
|
|
|
1563
1573
|
'logfire.msg_template': 'evaluate {name}',
|
|
1564
1574
|
'logfire.span_type': 'span',
|
|
1565
1575
|
'n_cases': 2,
|
|
1576
|
+
'logfire.experiment.metadata': {
|
|
1577
|
+
'n_cases': 2,
|
|
1578
|
+
'averages': {
|
|
1579
|
+
'name': 'Averages',
|
|
1580
|
+
'scores': {'confidence': 1.0},
|
|
1581
|
+
'labels': {},
|
|
1582
|
+
'metrics': {},
|
|
1583
|
+
'assertions': 1.0,
|
|
1584
|
+
'task_duration': 1.0,
|
|
1585
|
+
'total_duration': 9.0,
|
|
1586
|
+
},
|
|
1587
|
+
},
|
|
1566
1588
|
'name': 'mock_async_task',
|
|
1567
1589
|
'task_name': 'mock_async_task',
|
|
1568
1590
|
},
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
interactions:
|
|
2
|
+
- request:
|
|
3
|
+
body: '{"messages": [{"role": "user", "content": [{"text": "Hi"}]}], "system": [], "inferenceConfig": {}}'
|
|
4
|
+
headers:
|
|
5
|
+
amz-sdk-invocation-id:
|
|
6
|
+
- !!binary |
|
|
7
|
+
Zjg3NDYxYzEtZDQzZS00YThkLTkwNDMtNDcwOTNjMWZlMGM2
|
|
8
|
+
amz-sdk-request:
|
|
9
|
+
- !!binary |
|
|
10
|
+
YXR0ZW1wdD0x
|
|
11
|
+
content-length:
|
|
12
|
+
- '98'
|
|
13
|
+
content-type:
|
|
14
|
+
- !!binary |
|
|
15
|
+
YXBwbGljYXRpb24vanNvbg==
|
|
16
|
+
method: POST
|
|
17
|
+
uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/openai.gpt-oss-120b-1%3A0/converse-stream
|
|
18
|
+
response:
|
|
19
|
+
body:
|
|
20
|
+
string: !!binary |
|
|
21
|
+
AAAAsgAAAFKKQLTFCzpldmVudC10eXBlBwAMbWVzc2FnZVN0YXJ0DTpjb250ZW50LXR5cGUHABBh
|
|
22
|
+
cHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsicCI6ImFiY2RlZmdoaWprbG1u
|
|
23
|
+
b3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVowIiwicm9sZSI6ImFzc2lzdGFu
|
|
24
|
+
dCJ9QP+CaAAAAKIAAABXmsrXyAs6ZXZlbnQtdHlwZQcAEWNvbnRlbnRCbG9ja0RlbHRhDTpjb250
|
|
25
|
+
ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiY29udGVu
|
|
26
|
+
dEJsb2NrSW5kZXgiOjAsImRlbHRhIjp7InRleHQiOiIifSwicCI6ImFiY2RlZmdoaSJ9NTLrNAAA
|
|
27
|
+
ALkAAABW+v1BzQs6ZXZlbnQtdHlwZQcAEGNvbnRlbnRCbG9ja1N0b3ANOmNvbnRlbnQtdHlwZQcA
|
|
28
|
+
EGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJjb250ZW50QmxvY2tJbmRl
|
|
29
|
+
eCI6MCwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RV
|
|
30
|
+
VldYWVowIn2IAETUAAABWQAAAFducmUhCzpldmVudC10eXBlBwARY29udGVudEJsb2NrRGVsdGEN
|
|
31
|
+
OmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJj
|
|
32
|
+
b250ZW50QmxvY2tJbmRleCI6MSwiZGVsdGEiOnsicmVhc29uaW5nQ29udGVudCI6eyJ0ZXh0Ijoi
|
|
33
|
+
VGhlIHVzZXIganVzdCBzYXlzIFwiSGlcIi4gV2UgbmVlZCB0byByZXNwb25kIGFwcHJvcHJpYXRl
|
|
34
|
+
bHksIGZyaWVuZGx5IGdyZWV0aW5nLiBObyBzcGVjaWFsIGluc3RydWN0aW9ucy4gU2hvdWxkIGJl
|
|
35
|
+
IHNob3J0LiJ9fSwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5P
|
|
36
|
+
UFFSU1RVVldYIn2DKrHfAAAAsQAAAFbKjQoMCzpldmVudC10eXBlBwAQY29udGVudEJsb2NrU3Rv
|
|
37
|
+
cA06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7
|
|
38
|
+
ImNvbnRlbnRCbG9ja0luZGV4IjoxLCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNE
|
|
39
|
+
RUZHSElKS0xNTk9QUVJTIn1Cad1JAAAA5AAAAFdNeXohCzpldmVudC10eXBlBwARY29udGVudEJs
|
|
40
|
+
b2NrRGVsdGENOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcA
|
|
41
|
+
BWV2ZW50eyJjb250ZW50QmxvY2tJbmRleCI6MiwiZGVsdGEiOnsidGV4dCI6IkhlbGxvISBIb3cg
|
|
42
|
+
Y2FuIEkgaGVscCJ9LCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xN
|
|
43
|
+
Tk9QUVJTVFVWV1hZWjAxIn2L4Y7bAAAAuwAAAFf3OiI7CzpldmVudC10eXBlBwARY29udGVudEJs
|
|
44
|
+
b2NrRGVsdGENOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcA
|
|
45
|
+
BWV2ZW50eyJjb250ZW50QmxvY2tJbmRleCI6MiwiZGVsdGEiOnsidGV4dCI6IiB5b3UgdG9kYXk/
|
|
46
|
+
In0sInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2dyJ9dKsF8AAAAI4AAABW6fwlWws6ZXZlbnQt
|
|
47
|
+
dHlwZQcAEGNvbnRlbnRCbG9ja1N0b3ANOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24N
|
|
48
|
+
Om1lc3NhZ2UtdHlwZQcABWV2ZW50eyJjb250ZW50QmxvY2tJbmRleCI6MiwicCI6ImFiY2RlZmdo
|
|
49
|
+
aWoifbla37UAAACDAAAAUY8IdEkLOmV2ZW50LXR5cGUHAAttZXNzYWdlU3RvcA06Y29udGVudC10
|
|
50
|
+
eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7InAiOiJhYiIsInN0
|
|
51
|
+
b3BSZWFzb24iOiJlbmRfdHVybiJ9kFbppAAAAOQAAABOKRLS4Qs6ZXZlbnQtdHlwZQcACG1ldGFk
|
|
52
|
+
YXRhDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVu
|
|
53
|
+
dHsibWV0cmljcyI6eyJsYXRlbmN5TXMiOjc1M30sInAiOiJhYmNkZWZnaGlqa2xtbiIsInVzYWdl
|
|
54
|
+
Ijp7ImlucHV0VG9rZW5zIjo3MCwib3V0cHV0VG9rZW5zIjo0Mywic2VydmVyVG9vbFVzYWdlIjp7
|
|
55
|
+
fSwidG90YWxUb2tlbnMiOjExM319saJH4A==
|
|
56
|
+
headers:
|
|
57
|
+
connection:
|
|
58
|
+
- keep-alive
|
|
59
|
+
content-type:
|
|
60
|
+
- application/vnd.amazon.eventstream
|
|
61
|
+
transfer-encoding:
|
|
62
|
+
- chunked
|
|
63
|
+
status:
|
|
64
|
+
code: 200
|
|
65
|
+
message: OK
|
|
66
|
+
version: 1
|
|
@@ -32,7 +32,9 @@ from pydantic_ai import (
|
|
|
32
32
|
)
|
|
33
33
|
from pydantic_ai.agent import Agent
|
|
34
34
|
from pydantic_ai.exceptions import ModelRetry
|
|
35
|
+
from pydantic_ai.messages import AgentStreamEvent
|
|
35
36
|
from pydantic_ai.models import ModelRequestParameters
|
|
37
|
+
from pydantic_ai.run import AgentRunResult, AgentRunResultEvent
|
|
36
38
|
from pydantic_ai.tools import ToolDefinition
|
|
37
39
|
from pydantic_ai.usage import RequestUsage, RunUsage
|
|
38
40
|
|
|
@@ -1272,3 +1274,33 @@ async def test_bedrock_no_tool_choice(bedrock_provider: BedrockProvider):
|
|
|
1272
1274
|
]
|
|
1273
1275
|
}
|
|
1274
1276
|
)
|
|
1277
|
+
|
|
1278
|
+
|
|
1279
|
+
async def test_bedrock_model_stream_empty_text_delta(allow_model_requests: None, bedrock_provider: BedrockProvider):
|
|
1280
|
+
model = BedrockConverseModel(model_name='openai.gpt-oss-120b-1:0', provider=bedrock_provider)
|
|
1281
|
+
agent = Agent(model)
|
|
1282
|
+
|
|
1283
|
+
result: AgentRunResult | None = None
|
|
1284
|
+
events: list[AgentStreamEvent] = []
|
|
1285
|
+
async for event in agent.run_stream_events('Hi'):
|
|
1286
|
+
if isinstance(event, AgentRunResultEvent):
|
|
1287
|
+
result = event.result
|
|
1288
|
+
else:
|
|
1289
|
+
events.append(event)
|
|
1290
|
+
|
|
1291
|
+
assert result is not None
|
|
1292
|
+
# The response stream contains `{'contentBlockDelta': {'delta': {'text': ''}, 'contentBlockIndex': 0}}`, but our response should not have any empty text parts.
|
|
1293
|
+
assert not any(part.content == '' for part in result.response.parts if isinstance(part, TextPart))
|
|
1294
|
+
assert events == snapshot(
|
|
1295
|
+
[
|
|
1296
|
+
PartStartEvent(
|
|
1297
|
+
index=0,
|
|
1298
|
+
part=ThinkingPart(
|
|
1299
|
+
content='The user just says "Hi". We need to respond appropriately, friendly greeting. No special instructions. Should be short.'
|
|
1300
|
+
),
|
|
1301
|
+
),
|
|
1302
|
+
PartStartEvent(index=1, part=TextPart(content='Hello! How can I help')),
|
|
1303
|
+
FinalResultEvent(tool_name=None, tool_call_id=None),
|
|
1304
|
+
PartDeltaEvent(index=1, delta=TextPartDelta(content_delta=' you today?')),
|
|
1305
|
+
]
|
|
1306
|
+
)
|
|
@@ -1,24 +1,17 @@
|
|
|
1
1
|
from __future__ import annotations as _annotations
|
|
2
2
|
|
|
3
|
-
from typing import Any
|
|
4
|
-
|
|
5
3
|
import pytest
|
|
6
|
-
from dirty_equals import IsListOrTuple
|
|
7
4
|
from inline_snapshot import snapshot
|
|
8
5
|
|
|
9
6
|
from pydantic_ai import (
|
|
10
7
|
Agent,
|
|
11
|
-
FinalResultEvent,
|
|
12
8
|
ModelRequest,
|
|
13
9
|
ModelResponse,
|
|
14
|
-
PartDeltaEvent,
|
|
15
|
-
PartStartEvent,
|
|
16
10
|
TextPart,
|
|
17
|
-
TextPartDelta,
|
|
18
11
|
ThinkingPart,
|
|
19
|
-
ThinkingPartDelta,
|
|
20
12
|
UserPromptPart,
|
|
21
13
|
)
|
|
14
|
+
from pydantic_ai.run import AgentRunResult, AgentRunResultEvent
|
|
22
15
|
from pydantic_ai.usage import RequestUsage
|
|
23
16
|
|
|
24
17
|
from ..conftest import IsDatetime, IsStr, try_import
|
|
@@ -71,27 +64,42 @@ async def test_deepseek_model_thinking_stream(allow_model_requests: None, deepse
|
|
|
71
64
|
deepseek_model = OpenAIChatModel('deepseek-reasoner', provider=DeepSeekProvider(api_key=deepseek_api_key))
|
|
72
65
|
agent = Agent(model=deepseek_model)
|
|
73
66
|
|
|
74
|
-
|
|
75
|
-
async
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
async with node.stream(agent_run.ctx) as request_stream:
|
|
79
|
-
async for event in request_stream:
|
|
80
|
-
event_parts.append(event)
|
|
67
|
+
result: AgentRunResult | None = None
|
|
68
|
+
async for event in agent.run_stream_events(user_prompt='How do I cross the street?'):
|
|
69
|
+
if isinstance(event, AgentRunResultEvent):
|
|
70
|
+
result = event.result
|
|
81
71
|
|
|
82
|
-
assert
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
72
|
+
assert result is not None
|
|
73
|
+
assert result.all_messages() == snapshot(
|
|
74
|
+
[
|
|
75
|
+
ModelRequest(
|
|
76
|
+
parts=[
|
|
77
|
+
UserPromptPart(
|
|
78
|
+
content='How do I cross the street?',
|
|
79
|
+
timestamp=IsDatetime(),
|
|
80
|
+
)
|
|
81
|
+
]
|
|
82
|
+
),
|
|
83
|
+
ModelResponse(
|
|
84
|
+
parts=[
|
|
85
|
+
ThinkingPart(
|
|
86
|
+
content=IsStr(),
|
|
87
|
+
id='reasoning_content',
|
|
88
|
+
provider_name='deepseek',
|
|
89
|
+
),
|
|
90
|
+
TextPart(content='Hello there! 😊 How can I help you today?'),
|
|
91
|
+
],
|
|
92
|
+
usage=RequestUsage(
|
|
93
|
+
input_tokens=6,
|
|
94
|
+
output_tokens=212,
|
|
95
|
+
details={'prompt_cache_hit_tokens': 0, 'prompt_cache_miss_tokens': 6, 'reasoning_tokens': 198},
|
|
96
|
+
),
|
|
97
|
+
model_name='deepseek-reasoner',
|
|
98
|
+
timestamp=IsDatetime(),
|
|
99
|
+
provider_name='deepseek',
|
|
100
|
+
provider_details={'finish_reason': 'stop'},
|
|
101
|
+
provider_response_id='33be18fc-3842-486c-8c29-dd8e578f7f20',
|
|
102
|
+
finish_reason='stop',
|
|
88
103
|
),
|
|
89
|
-
|
|
90
|
-
2: snapshot(PartDeltaEvent(index=0, delta=ThinkingPartDelta(content_delta=',', provider_name='deepseek'))),
|
|
91
|
-
198: snapshot(PartStartEvent(index=1, part=TextPart(content='Hello'))),
|
|
92
|
-
199: snapshot(FinalResultEvent(tool_name=None, tool_call_id=None)),
|
|
93
|
-
200: snapshot(PartDeltaEvent(index=1, delta=TextPartDelta(content_delta=' there'))),
|
|
94
|
-
201: snapshot(PartDeltaEvent(index=1, delta=TextPartDelta(content_delta='!'))),
|
|
95
|
-
},
|
|
96
|
-
length=211,
|
|
104
|
+
]
|
|
97
105
|
)
|
|
@@ -5160,7 +5160,6 @@ async def test_tool_use_failed_error_streaming(allow_model_requests: None, groq_
|
|
|
5160
5160
|
),
|
|
5161
5161
|
ModelResponse(
|
|
5162
5162
|
parts=[
|
|
5163
|
-
TextPart(content=''),
|
|
5164
5163
|
ThinkingPart(
|
|
5165
5164
|
content="""\
|
|
5166
5165
|
The user requests to call the tool with non-existent parameters to test error handling. We need to call the function "get_something_by_name" with wrong parameters. The function expects a single argument object with "name". Non-existent parameters means we could provide a wrong key, or missing name. Let's provide an object with wrong key "nonexistent": "value". That should cause error. So we call the function with {"nonexistent": "test"}.
|
|
@@ -5205,7 +5204,6 @@ We need to output the call.\
|
|
|
5205
5204
|
),
|
|
5206
5205
|
ModelResponse(
|
|
5207
5206
|
parts=[
|
|
5208
|
-
TextPart(content=''),
|
|
5209
5207
|
ThinkingPart(content='We need to call with correct param: name. Use a placeholder name.'),
|
|
5210
5208
|
ToolCallPart(
|
|
5211
5209
|
tool_name='get_something_by_name',
|
|
@@ -9,7 +9,6 @@ from typing import Any, Literal, cast
|
|
|
9
9
|
from unittest.mock import Mock
|
|
10
10
|
|
|
11
11
|
import pytest
|
|
12
|
-
from dirty_equals import IsListOrTuple
|
|
13
12
|
from inline_snapshot import snapshot
|
|
14
13
|
from typing_extensions import TypedDict
|
|
15
14
|
|
|
@@ -18,19 +17,14 @@ from pydantic_ai import (
|
|
|
18
17
|
AudioUrl,
|
|
19
18
|
BinaryContent,
|
|
20
19
|
DocumentUrl,
|
|
21
|
-
FinalResultEvent,
|
|
22
20
|
ImageUrl,
|
|
23
21
|
ModelRequest,
|
|
24
22
|
ModelResponse,
|
|
25
23
|
ModelRetry,
|
|
26
|
-
PartDeltaEvent,
|
|
27
|
-
PartStartEvent,
|
|
28
24
|
RetryPromptPart,
|
|
29
25
|
SystemPromptPart,
|
|
30
26
|
TextPart,
|
|
31
|
-
TextPartDelta,
|
|
32
27
|
ThinkingPart,
|
|
33
|
-
ThinkingPartDelta,
|
|
34
28
|
ToolCallPart,
|
|
35
29
|
ToolReturnPart,
|
|
36
30
|
UserPromptPart,
|
|
@@ -38,6 +32,7 @@ from pydantic_ai import (
|
|
|
38
32
|
)
|
|
39
33
|
from pydantic_ai.exceptions import ModelHTTPError
|
|
40
34
|
from pydantic_ai.result import RunUsage
|
|
35
|
+
from pydantic_ai.run import AgentRunResult, AgentRunResultEvent
|
|
41
36
|
from pydantic_ai.settings import ModelSettings
|
|
42
37
|
from pydantic_ai.tools import RunContext
|
|
43
38
|
from pydantic_ai.usage import RequestUsage
|
|
@@ -978,35 +973,32 @@ async def test_hf_model_thinking_part_iter(allow_model_requests: None, huggingfa
|
|
|
978
973
|
)
|
|
979
974
|
agent = Agent(m)
|
|
980
975
|
|
|
981
|
-
|
|
982
|
-
async
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
},
|
|
1010
|
-
length=1062,
|
|
1011
|
-
)
|
|
976
|
+
result: AgentRunResult | None = None
|
|
977
|
+
async for event in agent.run_stream_events(user_prompt='How do I cross the street?'):
|
|
978
|
+
if isinstance(event, AgentRunResultEvent):
|
|
979
|
+
result = event.result
|
|
980
|
+
|
|
981
|
+
assert result is not None
|
|
982
|
+
assert result.all_messages() == snapshot(
|
|
983
|
+
[
|
|
984
|
+
ModelRequest(
|
|
985
|
+
parts=[
|
|
986
|
+
UserPromptPart(
|
|
987
|
+
content='How do I cross the street?',
|
|
988
|
+
timestamp=IsDatetime(),
|
|
989
|
+
)
|
|
990
|
+
]
|
|
991
|
+
),
|
|
992
|
+
ModelResponse(
|
|
993
|
+
parts=[
|
|
994
|
+
ThinkingPart(content=IsStr()),
|
|
995
|
+
TextPart(content=IsStr()),
|
|
996
|
+
],
|
|
997
|
+
model_name='Qwen/Qwen3-235B-A22B',
|
|
998
|
+
timestamp=IsDatetime(),
|
|
999
|
+
provider_name='huggingface',
|
|
1000
|
+
provider_details={'finish_reason': 'stop'},
|
|
1001
|
+
provider_response_id='chatcmpl-357f347a3f5d4897b36a128fb4e4cf7b',
|
|
1002
|
+
),
|
|
1003
|
+
]
|
|
1012
1004
|
)
|