pydantic-ai 1.3.0__tar.gz → 1.4.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.3.0 → pydantic_ai-1.4.0}/PKG-INFO +5 -5
- pydantic_ai-1.4.0/tests/models/cassettes/test_anthropic/test_anthropic_mcp_servers.yaml +401 -0
- pydantic_ai-1.4.0/tests/models/cassettes/test_anthropic/test_anthropic_mcp_servers_stream.yaml +245 -0
- pydantic_ai-1.4.0/tests/models/cassettes/test_openai_responses/test_openai_responses_model_mcp_server_tool.yaml +375 -0
- pydantic_ai-1.4.0/tests/models/cassettes/test_openai_responses/test_openai_responses_model_mcp_server_tool_stream.yaml +644 -0
- pydantic_ai-1.4.0/tests/models/cassettes/test_openai_responses/test_openai_responses_model_mcp_server_tool_with_connector.yaml +217 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/test_anthropic.py +513 -1
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/test_google.py +1 -1
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/test_model_request_parameters.py +21 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/test_openai_responses.py +798 -1
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/test_a2a.py +11 -9
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/test_agent.py +62 -102
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/test_examples.py +7 -10
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/.gitignore +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/LICENSE +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/Makefile +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/README.md +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/pyproject.toml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/__init__.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/assets/dummy.pdf +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/assets/dummy.txt +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/assets/kiwi.png +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/assets/marcelo.mp3 +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/assets/product_name.txt +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/assets/small_video.mp4 +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_dbos/test_complex_agent_run.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_dbos/test_complex_agent_run_in_workflow.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_dbos/test_complex_agent_run_stream_in_workflow.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_dbos/test_dbos_agent_iter.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_dbos/test_dbos_agent_iter_in_workflow.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_dbos/test_dbos_agent_override_deps_in_workflow.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_dbos/test_dbos_agent_override_tools_in_workflow.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_dbos/test_dbos_agent_run.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_dbos/test_dbos_agent_run_in_workflow_with_toolsets.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_dbos/test_dbos_agent_run_stream.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_dbos/test_dbos_agent_run_sync.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_dbos/test_dbos_agent_run_sync_in_workflow.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_dbos/test_dbos_agent_with_dataclass_deps_as_dict.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_dbos/test_dbos_agent_with_hitl_tool.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_dbos/test_dbos_agent_with_hitl_tool_sync.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_dbos/test_dbos_agent_with_model_retry.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_dbos/test_dbos_agent_with_non_dict_deps.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_dbos/test_dbos_agent_with_unserializable_deps_type.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_dbos/test_dbos_model_stream_direct.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_dbos/test_multiple_agents.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_dbos/test_simple_agent_run_in_workflow.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_mcp/test_agent_with_server_not_running.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_mcp/test_agent_with_stdio_server.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_mcp/test_tool_returning_audio_resource.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_mcp/test_tool_returning_audio_resource_link.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_mcp/test_tool_returning_dict.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_mcp/test_tool_returning_error.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_mcp/test_tool_returning_image.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_mcp/test_tool_returning_image_resource.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_mcp/test_tool_returning_image_resource_link.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_mcp/test_tool_returning_multiple_items.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_mcp/test_tool_returning_none.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_mcp/test_tool_returning_str.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_mcp/test_tool_returning_text_resource.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_mcp/test_tool_returning_text_resource_link.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_mcp/test_tool_returning_unstructured_dict.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_prefect/test_complex_agent_run_in_flow.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_prefect/test_iter_in_flow.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_prefect/test_multiple_agents.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_prefect/test_prefect_agent_iter.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_prefect/test_prefect_agent_override_deps.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_prefect/test_prefect_agent_override_tools.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_prefect/test_prefect_agent_override_toolsets.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_prefect/test_prefect_agent_run.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_prefect/test_prefect_agent_run_stream.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_prefect/test_prefect_agent_run_stream_events.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_prefect/test_prefect_agent_run_sync.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_prefect/test_prefect_agent_with_hitl_tool.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_prefect/test_prefect_agent_with_hitl_tool_sync.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_prefect/test_prefect_agent_with_model_retry.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_prefect/test_prefect_agent_with_unserializable_deps.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_prefect/test_run_stream_in_flow.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_prefect/test_run_sync_in_flow.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_prefect/test_simple_agent_run_in_flow.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_settings/test_stop_settings[anthropic].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_settings/test_stop_settings[bedrock].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_settings/test_stop_settings[cohere].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_settings/test_stop_settings[gemini].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_settings/test_stop_settings[google].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_settings/test_stop_settings[groq].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_settings/test_stop_settings[mistral].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_settings/test_stop_settings[openai].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_temporal/test_complex_agent_run.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_temporal/test_complex_agent_run_in_workflow.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_temporal/test_complex_agent_run_stream_in_workflow.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_temporal/test_logfire_plugin.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_temporal/test_multiple_agents.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_temporal/test_simple_agent_run_in_workflow.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_temporal/test_temporal_agent_iter.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_temporal/test_temporal_agent_override_deps_in_workflow.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_temporal/test_temporal_agent_run.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_temporal/test_temporal_agent_run_stream.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_temporal/test_temporal_agent_run_stream_events.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_temporal/test_temporal_agent_run_sync.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_temporal/test_temporal_agent_sync_tool_activity_disabled.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_temporal/test_temporal_agent_with_dataclass_deps_as_dict.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_temporal/test_temporal_agent_with_hitl_tool.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_temporal/test_temporal_agent_with_model_retry.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_temporal/test_temporal_agent_with_non_dict_deps.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_temporal/test_temporal_agent_with_unserializable_deps_type.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/cassettes/test_temporal/test_web_search_agent_run_in_workflow.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/conftest.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/evals/__init__.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/evals/test_dataset.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/evals/test_evaluator_base.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/evals/test_evaluator_common.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/evals/test_evaluator_context.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/evals/test_evaluator_spec.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/evals/test_evaluators.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/evals/test_llm_as_a_judge.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/evals/test_otel.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/evals/test_render_numbers.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/evals/test_reporting.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/evals/test_reports.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/evals/test_utils.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/evals/utils.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/example_modules/README.md +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/example_modules/bank_database.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/example_modules/fake_database.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/example_modules/mcp_server.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/example_modules/weather_service.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/ext/__init__.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/ext/test_langchain.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/graph/__init__.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/graph/test_file_persistence.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/graph/test_graph.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/graph/test_mermaid.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/graph/test_persistence.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/graph/test_state.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/graph/test_utils.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/import_examples.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/json_body_serializer.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/mcp_server.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/__init__.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_anthropic/test_anthropic_code_execution_tool.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_anthropic/test_anthropic_code_execution_tool_stream.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_anthropic/test_anthropic_memory_tool.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_empty_message_on_history.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_instructions.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_from_other_model.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_redacted.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_redacted_stream.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_stream.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_web_search_tool_stream.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_anthropic/test_anthropic_output_tool_with_thinking.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output_multiple.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_anthropic/test_anthropic_server_tool_pass_history_to_another_provider.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_anthropic/test_anthropic_server_tool_receive_history_from_another_provider.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_anthropic/test_anthropic_text_output_function.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_anthropic/test_anthropic_text_parts_ahead_of_built_in_tool_call.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_anthropic/test_anthropic_tool_output.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_anthropic/test_anthropic_tool_with_thinking.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_anthropic/test_anthropic_web_search_tool.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_anthropic/test_anthropic_web_search_tool_stream.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_anthropic/test_document_binary_content_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_anthropic/test_document_url_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_anthropic/test_extra_headers.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_anthropic/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_anthropic/test_image_url_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_anthropic/test_image_url_input_invalid_mime_type.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_anthropic/test_multiple_parallel_tool_calls.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_anthropic/test_text_document_url_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_anthropic_tool_with_thinking.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_empty_system_prompt.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_anthropic_model_without_tools.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_guardrail_config.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_instructions.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_iter_stream.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_max_tokens.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_other_parameters.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_performance_config.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_retry.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_stream.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_stream_empty_text_delta.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_structured_output.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_anthropic.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_deepseek.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_from_other_model.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_redacted.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_redacted_stream.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_stream.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_top_p.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_multiple_documents_in_history.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_bedrock/test_document_url_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_bedrock/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_bedrock/test_image_url_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_bedrock/test_text_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_bedrock/test_text_document_url_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_bedrock/test_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_bedrock/test_video_url_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_cohere/test_cohere_model_instructions.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_cohere/test_cohere_model_thinking_part.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_cohere/test_request_simple_success_with_vcr.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_part.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_stream.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_download_item/test_download_item_application_octet_stream.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_download_item/test_download_item_audio_mpeg.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_download_item/test_download_item_no_content_type.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini/test_document_url_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_false.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_true.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini/test_gemini_drop_exclusive_maximum.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini/test_gemini_exclusive_minimum_and_maximum.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini/test_gemini_model_instructions.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini/test_gemini_model_thinking_part.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini/test_gemini_native_output.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini/test_gemini_native_output_multiple.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini/test_gemini_prompted_output.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_multiple.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_with_tools.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini/test_gemini_text_output_function.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini/test_gemini_tool_config_any_with_tool_without_args.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini/test_gemini_tool_output.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini/test_gemini_youtube_video_url_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini/test_image_url_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini/test_labels_are_ignored_with_gla_provider.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini/test_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini/test_video_url_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini_vertex/test_labels.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl (gs)].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl (gs)].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl (gs)].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (YouTube)].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (gs)].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_gemini_vertex/test_url_input_force_download.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_builtin_tools_with_other_tools.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_image_and_text_output.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_image_generation.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_image_generation_stream.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_image_generation_with_text.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_image_or_text_output.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_builtin_code_execution_stream.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_code_execution_tool.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_document_url_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_empty_assistant_response.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_empty_user_prompt.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_image_url_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_instructions.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_iter_stream.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_max_tokens.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_multiple_documents_in_history.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_receive_web_search_history_from_another_provider.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_retry.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_safety_settings.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_server_tool_receive_history_from_another_provider.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_stream.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_structured_output.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_text_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_text_document_url_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_thinking_config.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_thinking_part.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_thinking_part_from_other_model.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_thinking_part_iter.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_top_p.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_url_context_tool.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_usage_limit_exceeded.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_usage_limit_not_exceeded.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_vertex_labels.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_vertex_provider.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input_with_vendor_metadata.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_video_url_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_web_search_tool.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_web_search_tool_stream.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_model_youtube_video_url_input_with_vendor_metadata.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_multiple_images.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_native_output.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_native_output_multiple.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_prompted_output.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_prompted_output_multiple.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_prompted_output_with_tools.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_text_output_function.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_timeout.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_tool_config_any_with_tool_without_args.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_tool_output.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl (gs)].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl (gs)].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl (gs)].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (YouTube)].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (gs)].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_url_input_force_download.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_vertexai_image_generation.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_google/test_google_vertexai_model_usage_limit_exceeded.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_groq/test_extra_headers.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_groq/test_groq_model_instructions.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_groq/test_groq_model_thinking_part.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_groq/test_groq_model_thinking_part_iter.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_groq/test_groq_model_web_search_tool.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_groq/test_groq_model_web_search_tool_stream.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_groq/test_groq_native_output.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_groq/test_groq_prompted_output.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_groq/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_groq/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_groq/test_image_url_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_groq/test_tool_regular_error.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_groq/test_tool_use_failed_error.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_groq/test_tool_use_failed_error_streaming.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_huggingface/test_hf_model_instructions.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_huggingface/test_hf_model_thinking_part.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_huggingface/test_hf_model_thinking_part_iter.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_huggingface/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_huggingface/test_image_url_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[Qwen-Qwen2.5-72B-Instruct].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[deepseek-ai-DeepSeek-R1-0528].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[meta-llama-Llama-3.3-70B-Instruct].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_huggingface/test_request_simple_success_with_vcr.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_huggingface/test_request_simple_usage.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_huggingface/test_simple_completion.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_huggingface/test_stream_completion.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_mistral/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_mistral/test_mistral_model_instructions.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part_iter.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_model_names/test_known_model_names.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_audio_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_compatible_api_with_tool_calls_without_id.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_document_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_document_as_binary_content_input_with_tool.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_document_url_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_extra_headers.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_image_url_input_force_download.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_image_url_input_force_download_response_api.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_image_url_tool_response.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_invalid_response.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4.5-preview].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4o-mini].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_max_completion_tokens[o3-mini].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_multiple_agent_tool_calls.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_openai_audio_url_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_openai_instructions.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_openai_instructions_with_tool_calls_keep_instructions.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_openai_model_cerebras_provider.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_openai_model_cerebras_provider_harmony.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_openai_model_cerebras_provider_qwen_3_coder.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_openai_model_settings_temperature_ignored_on_gpt_5.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_openai_model_thinking_part.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_openai_model_without_system_prompt.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_openai_native_output.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_openai_native_output_multiple.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[developer].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[system].yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_openai_prompted_output.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_openai_prompted_output_multiple.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_openai_text_output_function.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_openai_tool_output.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_openai_web_search_tool.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_openai_web_search_tool_model_not_supported.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_openai_web_search_tool_with_user_location.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_reasoning_model_with_temperature.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_system_prompt_role_o1_mini.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_text_document_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_text_document_url_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_text_response.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_user_id.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai/test_valid_response.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_audio_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_native_output.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_native_output_multiple.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_previous_response_id.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_previous_response_id_auto_mode.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_code_execution_return_image.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_code_execution_return_image_stream.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_url_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_history_with_combined_tool_call_id.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_and_text_output.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_jpeg.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_stream.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_tool_without_image_output.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_with_native_output.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_with_prompted_output.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_with_tool_output.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_with_tools.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_or_text_output.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_url_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools_web_search.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_http_error.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_instructions.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_retry.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response_with_tool_call.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_thinking_part.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_stream.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_with_invalid_region.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_with_user_location.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_multiple_images.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_non_reasoning_model_no_item_ids.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_output_type.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_effort.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_generate_summary.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_stream.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_streaming_usage.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_system_prompt.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_text_document_url_input.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_part_from_other_model.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_part_iter.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_with_code_execution_tool.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_with_code_execution_tool_stream.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_with_modified_history.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_with_tool_calls.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_verbosity.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_prompted_output.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_prompted_output_multiple.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_reasoning_model_with_temperature.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_text_output_function.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/cassettes/test_openai_responses/test_tool_output.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/mock_async_stream.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/mock_openai.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/test_bedrock.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/test_cohere.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/test_deepseek.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/test_download_item.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/test_fallback.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/test_gemini.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/test_gemini_vertex.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/test_groq.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/test_huggingface.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/test_instrumented.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/test_mcp_sampling.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/test_mistral.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/test_model.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/test_model_function.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/test_model_names.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/test_model_settings.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/test_model_test.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/models/test_openai.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/parts_from_messages.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/__init__.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/cassettes/test_azure/test_azure_provider_call.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_anthropic.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_bedrock.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_google_vertex.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_groq.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_openai.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_openai_responses.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/cassettes/test_google_vertex/test_vertexai_provider.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/cassettes/test_heroku/test_heroku_model_provider_claude_3_7_sonnet.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/cassettes/test_openrouter/test_openrouter_with_google_model.yaml +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/test_anthropic.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/test_azure.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/test_bedrock.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/test_cerebras.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/test_cohere.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/test_deepseek.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/test_fireworks.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/test_gateway.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/test_github.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/test_google_gla.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/test_google_vertex.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/test_grok.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/test_groq.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/test_heroku.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/test_huggingface.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/test_litellm.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/test_mistral.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/test_moonshotai.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/test_nebius.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/test_ollama.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/test_openai.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/test_openrouter.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/test_ovhcloud.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/test_provider_names.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/test_together.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/providers/test_vercel.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/test_ag_ui.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/test_builtin_tools.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/test_cli.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/test_dbos.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/test_deps.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/test_direct.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/test_format_as_xml.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/test_function_schema.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/test_history_processor.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/test_json_body_serializer.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/test_live.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/test_logfire.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/test_mcp.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/test_messages.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/test_parts_manager.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/test_prefect.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/test_settings.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/test_streaming.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/test_temporal.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/test_tenacity.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/test_thinking_part.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/test_tools.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/test_toolsets.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/test_usage_limits.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/test_utils.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.0}/tests/typed_agent.py +0 -0
- {pydantic_ai-1.3.0 → pydantic_ai-1.4.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.4.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.4.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.4.0; extra == 'dbos'
|
|
34
34
|
Provides-Extra: examples
|
|
35
|
-
Requires-Dist: pydantic-ai-examples==1.
|
|
35
|
+
Requires-Dist: pydantic-ai-examples==1.4.0; extra == 'examples'
|
|
36
36
|
Provides-Extra: prefect
|
|
37
|
-
Requires-Dist: pydantic-ai-slim[prefect]==1.
|
|
37
|
+
Requires-Dist: pydantic-ai-slim[prefect]==1.4.0; extra == 'prefect'
|
|
38
38
|
Description-Content-Type: text/markdown
|
|
39
39
|
|
|
40
40
|
<div align="center">
|
|
@@ -0,0 +1,401 @@
|
|
|
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
|
+
- '346'
|
|
12
|
+
content-type:
|
|
13
|
+
- application/json
|
|
14
|
+
host:
|
|
15
|
+
- api.anthropic.com
|
|
16
|
+
method: POST
|
|
17
|
+
parsed_body:
|
|
18
|
+
max_tokens: 4096
|
|
19
|
+
mcp_servers:
|
|
20
|
+
- name: deepwiki
|
|
21
|
+
type: url
|
|
22
|
+
url: https://mcp.deepwiki.com/mcp
|
|
23
|
+
messages:
|
|
24
|
+
- content:
|
|
25
|
+
- text: Can you tell me more about the pydantic/pydantic-ai repo? Keep your answer short
|
|
26
|
+
type: text
|
|
27
|
+
role: user
|
|
28
|
+
model: claude-sonnet-4-0
|
|
29
|
+
stream: false
|
|
30
|
+
thinking:
|
|
31
|
+
budget_tokens: 3000
|
|
32
|
+
type: enabled
|
|
33
|
+
uri: https://api.anthropic.com/v1/messages?beta=true
|
|
34
|
+
response:
|
|
35
|
+
headers:
|
|
36
|
+
connection:
|
|
37
|
+
- keep-alive
|
|
38
|
+
content-length:
|
|
39
|
+
- '6664'
|
|
40
|
+
content-type:
|
|
41
|
+
- application/json
|
|
42
|
+
strict-transport-security:
|
|
43
|
+
- max-age=31536000; includeSubDomains; preload
|
|
44
|
+
transfer-encoding:
|
|
45
|
+
- chunked
|
|
46
|
+
parsed_body:
|
|
47
|
+
content:
|
|
48
|
+
- signature: EqUDCkYICBgCKkCTiLjx5Rzw9zXo4pFDhFAc9Ci1R+d2fpkiqw7IPt1PgxBankr7bhRfh2iQOFEUy7sYVtsBxvnHW8zfBRxH1j6lEgySvdOyObrcFdJX3qkaDMAMCdLHIevZ/mSx/SIwi917U34N5jLQH1yMoCx/k72klLG5v42vcwUTG4ngKDI69Ddaf0eeDpgg3tL5FHfvKowCnslWg3Pd3ITe+TLlzu+OVZhRKU9SEwDJbjV7ZF954Ls6XExAfjdXhrhvXDB+hz6fZFPGFEfXV7jwElFT5HcGPWy84xvlwzbklZ2zH3XViik0B5dMErMAKs6IVwqXo3s+0p9xtX5gCBuvLkalET2upNsmdKGJv7WQWoaLch5N07uvSgWkO8AkGuVtBgqZH+uRGlPfYlnAgifNHu00GSAVK3beeyZfpnSQ6LQKcH+wVmrOi/3UvzA5f1LvsXG32gQKUCxztATnlBaI+7GMs1IAloaRHBndyRoe8Lwv79zZe9u9gnF9WCgK3yQsAR5hGZXlBKiIWfnRrXQ7QmA2hVO+mhEOCnz7OQkMIEUlfxgB
|
|
49
|
+
thinking: The user is asking about the pydantic/pydantic-ai repository and wants me to keep the answer short. I should
|
|
50
|
+
use the deepwiki tools to get information about this repository. Let me start by asking a general question about
|
|
51
|
+
what this repository is about.
|
|
52
|
+
type: thinking
|
|
53
|
+
- id: mcptoolu_01SAss3KEwASziHZoMR6HcZU
|
|
54
|
+
input:
|
|
55
|
+
question: What is pydantic-ai and what does this repository do?
|
|
56
|
+
repoName: pydantic/pydantic-ai
|
|
57
|
+
name: ask_question
|
|
58
|
+
server_name: deepwiki
|
|
59
|
+
type: mcp_tool_use
|
|
60
|
+
- content:
|
|
61
|
+
- text: |
|
|
62
|
+
Pydantic AI is a Python agent framework designed to simplify the development of production-grade applications using Generative AI . The repository contains this framework, which emphasizes an ergonomic developer experience and type-safety, similar to Pydantic and FastAPI .
|
|
63
|
+
|
|
64
|
+
## Core Functionality
|
|
65
|
+
|
|
66
|
+
The `pydantic-ai` repository provides a comprehensive set of tools and abstractions for building AI agents . Its core components include:
|
|
67
|
+
|
|
68
|
+
* **Type-safe agents**: Agents are defined using `Agent[Deps, Output]` for compile-time validation .
|
|
69
|
+
* **Model-agnostic design**: It supports over 15 LLM providers through a unified `Model` interface .
|
|
70
|
+
* **Structured outputs**: Automatic Pydantic validation and self-correction ensure structured outputs .
|
|
71
|
+
* **Observability**: Integration with OpenTelemetry and Logfire provides comprehensive observability .
|
|
72
|
+
* **Production-ready tooling**: This includes an evaluation framework, durable execution, and protocol integrations .
|
|
73
|
+
|
|
74
|
+
## Repository Structure
|
|
75
|
+
|
|
76
|
+
The `pydantic-ai` repository is organized as a UV workspace monorepo, containing several packages :
|
|
77
|
+
|
|
78
|
+
* `pydantic-ai-slim`: This is the core framework, containing modules for `Agent`, `Model`, and tools .
|
|
79
|
+
* `pydantic-graph`: Provides the graph execution engine .
|
|
80
|
+
* `pydantic-evals`: Offers an evaluation framework for datasets and evaluators .
|
|
81
|
+
* `examples`: Contains example applications .
|
|
82
|
+
* `clai`: A CLI interface for the framework .
|
|
83
|
+
* `pydantic-ai`: A meta-package that includes all optional extras .
|
|
84
|
+
|
|
85
|
+
## Agent Execution
|
|
86
|
+
|
|
87
|
+
The `Agent` class is the primary interface for orchestrating AI tasks . It coordinates the model abstraction, message protocol, tool system, and graph execution . Agent execution uses a graph-based state machine from `pydantic_graph.Graph` . The execution flow involves three core node types :
|
|
88
|
+
|
|
89
|
+
* `UserPromptNode`: Processes user input and creates initial `ModelRequest` .
|
|
90
|
+
* `ModelRequestNode`: Calls `model.request()` or `model.request_stream()` and handles retries .
|
|
91
|
+
* `CallToolsNode`: Executes tool functions via `RunContext[Deps]` .
|
|
92
|
+
|
|
93
|
+
The `Agent` class provides methods like `run()`, `run_sync()`, and `run_stream()` for different execution needs .
|
|
94
|
+
|
|
95
|
+
## Key Features
|
|
96
|
+
|
|
97
|
+
### Model Provider Support
|
|
98
|
+
Pydantic AI offers a unified `Model` abstract base class for various LLM providers, including OpenAI, Anthropic, Google, and more . All models implement `request(messages)` and `request_stream(messages)` methods .
|
|
99
|
+
|
|
100
|
+
### Tool System
|
|
101
|
+
The framework includes a tool system for registering and executing functions via decorators like `@agent.tool` . It automatically generates JSON schemas from function signatures and docstrings, validates tool call arguments, and injects `RunContext[Deps]` for dependencies .
|
|
102
|
+
|
|
103
|
+
### Observability
|
|
104
|
+
Pydantic AI integrates with OpenTelemetry, providing instrumentation for agent runs, model requests, and tool executions . It also has native integration with Pydantic Logfire for real-time debugging and performance monitoring .
|
|
105
|
+
|
|
106
|
+
### Evaluation Framework
|
|
107
|
+
The `pydantic-evals` package provides a framework for systematically testing and evaluating agent performance . It supports datasets with `Case` objects, various evaluators, and generates `EvaluationReport` with aggregated metrics .
|
|
108
|
+
|
|
109
|
+
## Integrations
|
|
110
|
+
Pydantic AI supports various integrations for development and production, including :
|
|
111
|
+
* **Model Context Protocol (MCP)**: For external tool server access .
|
|
112
|
+
* **AG-UI Protocol**: For interactive application frontends .
|
|
113
|
+
* **Agent2Agent (A2A)**: For multi-agent communication .
|
|
114
|
+
* **Temporal**: For durable workflow execution .
|
|
115
|
+
* **DBOS**: For database-backed execution .
|
|
116
|
+
|
|
117
|
+
Notes:
|
|
118
|
+
The `pydantic-ai-slim` package is a core version of the framework, allowing users to install only necessary dependencies for specific models or features . The `pydantic-ai` package is a meta-package that includes all optional extras .
|
|
119
|
+
|
|
120
|
+
Wiki pages you might want to explore:
|
|
121
|
+
- [Overview (pydantic/pydantic-ai)](/wiki/pydantic/pydantic-ai#1)
|
|
122
|
+
|
|
123
|
+
View this search on DeepWiki: https://deepwiki.com/search/what-is-pydanticai-and-what-do_2dc46d92-288e-470b-b52e-24bb13f839c7
|
|
124
|
+
type: text
|
|
125
|
+
is_error: false
|
|
126
|
+
tool_use_id: mcptoolu_01SAss3KEwASziHZoMR6HcZU
|
|
127
|
+
type: mcp_tool_result
|
|
128
|
+
- text: |-
|
|
129
|
+
**Pydantic AI** is a Python agent framework for building production-grade applications with Generative AI. It provides:
|
|
130
|
+
|
|
131
|
+
- **Type-safe agents** with compile-time validation using `Agent[Deps, Output]`
|
|
132
|
+
- **Model-agnostic design** supporting 15+ LLM providers (OpenAI, Anthropic, Google, etc.)
|
|
133
|
+
- **Structured outputs** with automatic Pydantic validation and self-correction
|
|
134
|
+
- **Built-in observability** via OpenTelemetry and Logfire integration
|
|
135
|
+
- **Production tooling** including evaluation framework, durable execution, and tool system
|
|
136
|
+
|
|
137
|
+
The repo is organized as a monorepo with core packages like `pydantic-ai-slim` (core framework), `pydantic-graph` (execution engine), and `pydantic-evals` (evaluation tools). It emphasizes developer ergonomics and type safety, similar to Pydantic and FastAPI.
|
|
138
|
+
type: text
|
|
139
|
+
id: msg_01MYDjkvBDRaKsY6PDwQz3n6
|
|
140
|
+
model: claude-sonnet-4-20250514
|
|
141
|
+
role: assistant
|
|
142
|
+
stop_reason: end_turn
|
|
143
|
+
stop_sequence: null
|
|
144
|
+
type: message
|
|
145
|
+
usage:
|
|
146
|
+
cache_creation:
|
|
147
|
+
ephemeral_1h_input_tokens: 0
|
|
148
|
+
ephemeral_5m_input_tokens: 0
|
|
149
|
+
cache_creation_input_tokens: 0
|
|
150
|
+
cache_read_input_tokens: 0
|
|
151
|
+
input_tokens: 2674
|
|
152
|
+
output_tokens: 373
|
|
153
|
+
server_tool_use:
|
|
154
|
+
web_search_requests: 0
|
|
155
|
+
service_tier: standard
|
|
156
|
+
status:
|
|
157
|
+
code: 200
|
|
158
|
+
message: OK
|
|
159
|
+
- request:
|
|
160
|
+
headers:
|
|
161
|
+
accept:
|
|
162
|
+
- application/json
|
|
163
|
+
accept-encoding:
|
|
164
|
+
- gzip, deflate
|
|
165
|
+
connection:
|
|
166
|
+
- keep-alive
|
|
167
|
+
content-length:
|
|
168
|
+
- '6733'
|
|
169
|
+
content-type:
|
|
170
|
+
- application/json
|
|
171
|
+
host:
|
|
172
|
+
- api.anthropic.com
|
|
173
|
+
method: POST
|
|
174
|
+
parsed_body:
|
|
175
|
+
max_tokens: 4096
|
|
176
|
+
mcp_servers:
|
|
177
|
+
- name: deepwiki
|
|
178
|
+
type: url
|
|
179
|
+
url: https://mcp.deepwiki.com/mcp
|
|
180
|
+
messages:
|
|
181
|
+
- content:
|
|
182
|
+
- text: Can you tell me more about the pydantic/pydantic-ai repo? Keep your answer short
|
|
183
|
+
type: text
|
|
184
|
+
role: user
|
|
185
|
+
- content:
|
|
186
|
+
- signature: EqUDCkYICBgCKkCTiLjx5Rzw9zXo4pFDhFAc9Ci1R+d2fpkiqw7IPt1PgxBankr7bhRfh2iQOFEUy7sYVtsBxvnHW8zfBRxH1j6lEgySvdOyObrcFdJX3qkaDMAMCdLHIevZ/mSx/SIwi917U34N5jLQH1yMoCx/k72klLG5v42vcwUTG4ngKDI69Ddaf0eeDpgg3tL5FHfvKowCnslWg3Pd3ITe+TLlzu+OVZhRKU9SEwDJbjV7ZF954Ls6XExAfjdXhrhvXDB+hz6fZFPGFEfXV7jwElFT5HcGPWy84xvlwzbklZ2zH3XViik0B5dMErMAKs6IVwqXo3s+0p9xtX5gCBuvLkalET2upNsmdKGJv7WQWoaLch5N07uvSgWkO8AkGuVtBgqZH+uRGlPfYlnAgifNHu00GSAVK3beeyZfpnSQ6LQKcH+wVmrOi/3UvzA5f1LvsXG32gQKUCxztATnlBaI+7GMs1IAloaRHBndyRoe8Lwv79zZe9u9gnF9WCgK3yQsAR5hGZXlBKiIWfnRrXQ7QmA2hVO+mhEOCnz7OQkMIEUlfxgB
|
|
187
|
+
thinking: The user is asking about the pydantic/pydantic-ai repository and wants me to keep the answer short. I
|
|
188
|
+
should use the deepwiki tools to get information about this repository. Let me start by asking a general question
|
|
189
|
+
about what this repository is about.
|
|
190
|
+
type: thinking
|
|
191
|
+
- id: mcptoolu_01SAss3KEwASziHZoMR6HcZU
|
|
192
|
+
input:
|
|
193
|
+
question: What is pydantic-ai and what does this repository do?
|
|
194
|
+
repoName: pydantic/pydantic-ai
|
|
195
|
+
name: ask_question
|
|
196
|
+
server_name: deepwiki
|
|
197
|
+
type: mcp_tool_use
|
|
198
|
+
- content:
|
|
199
|
+
- citations: null
|
|
200
|
+
text: |
|
|
201
|
+
Pydantic AI is a Python agent framework designed to simplify the development of production-grade applications using Generative AI . The repository contains this framework, which emphasizes an ergonomic developer experience and type-safety, similar to Pydantic and FastAPI .
|
|
202
|
+
|
|
203
|
+
## Core Functionality
|
|
204
|
+
|
|
205
|
+
The `pydantic-ai` repository provides a comprehensive set of tools and abstractions for building AI agents . Its core components include:
|
|
206
|
+
|
|
207
|
+
* **Type-safe agents**: Agents are defined using `Agent[Deps, Output]` for compile-time validation .
|
|
208
|
+
* **Model-agnostic design**: It supports over 15 LLM providers through a unified `Model` interface .
|
|
209
|
+
* **Structured outputs**: Automatic Pydantic validation and self-correction ensure structured outputs .
|
|
210
|
+
* **Observability**: Integration with OpenTelemetry and Logfire provides comprehensive observability .
|
|
211
|
+
* **Production-ready tooling**: This includes an evaluation framework, durable execution, and protocol integrations .
|
|
212
|
+
|
|
213
|
+
## Repository Structure
|
|
214
|
+
|
|
215
|
+
The `pydantic-ai` repository is organized as a UV workspace monorepo, containing several packages :
|
|
216
|
+
|
|
217
|
+
* `pydantic-ai-slim`: This is the core framework, containing modules for `Agent`, `Model`, and tools .
|
|
218
|
+
* `pydantic-graph`: Provides the graph execution engine .
|
|
219
|
+
* `pydantic-evals`: Offers an evaluation framework for datasets and evaluators .
|
|
220
|
+
* `examples`: Contains example applications .
|
|
221
|
+
* `clai`: A CLI interface for the framework .
|
|
222
|
+
* `pydantic-ai`: A meta-package that includes all optional extras .
|
|
223
|
+
|
|
224
|
+
## Agent Execution
|
|
225
|
+
|
|
226
|
+
The `Agent` class is the primary interface for orchestrating AI tasks . It coordinates the model abstraction, message protocol, tool system, and graph execution . Agent execution uses a graph-based state machine from `pydantic_graph.Graph` . The execution flow involves three core node types :
|
|
227
|
+
|
|
228
|
+
* `UserPromptNode`: Processes user input and creates initial `ModelRequest` .
|
|
229
|
+
* `ModelRequestNode`: Calls `model.request()` or `model.request_stream()` and handles retries .
|
|
230
|
+
* `CallToolsNode`: Executes tool functions via `RunContext[Deps]` .
|
|
231
|
+
|
|
232
|
+
The `Agent` class provides methods like `run()`, `run_sync()`, and `run_stream()` for different execution needs .
|
|
233
|
+
|
|
234
|
+
## Key Features
|
|
235
|
+
|
|
236
|
+
### Model Provider Support
|
|
237
|
+
Pydantic AI offers a unified `Model` abstract base class for various LLM providers, including OpenAI, Anthropic, Google, and more . All models implement `request(messages)` and `request_stream(messages)` methods .
|
|
238
|
+
|
|
239
|
+
### Tool System
|
|
240
|
+
The framework includes a tool system for registering and executing functions via decorators like `@agent.tool` . It automatically generates JSON schemas from function signatures and docstrings, validates tool call arguments, and injects `RunContext[Deps]` for dependencies .
|
|
241
|
+
|
|
242
|
+
### Observability
|
|
243
|
+
Pydantic AI integrates with OpenTelemetry, providing instrumentation for agent runs, model requests, and tool executions . It also has native integration with Pydantic Logfire for real-time debugging and performance monitoring .
|
|
244
|
+
|
|
245
|
+
### Evaluation Framework
|
|
246
|
+
The `pydantic-evals` package provides a framework for systematically testing and evaluating agent performance . It supports datasets with `Case` objects, various evaluators, and generates `EvaluationReport` with aggregated metrics .
|
|
247
|
+
|
|
248
|
+
## Integrations
|
|
249
|
+
Pydantic AI supports various integrations for development and production, including :
|
|
250
|
+
* **Model Context Protocol (MCP)**: For external tool server access .
|
|
251
|
+
* **AG-UI Protocol**: For interactive application frontends .
|
|
252
|
+
* **Agent2Agent (A2A)**: For multi-agent communication .
|
|
253
|
+
* **Temporal**: For durable workflow execution .
|
|
254
|
+
* **DBOS**: For database-backed execution .
|
|
255
|
+
|
|
256
|
+
Notes:
|
|
257
|
+
The `pydantic-ai-slim` package is a core version of the framework, allowing users to install only necessary dependencies for specific models or features . The `pydantic-ai` package is a meta-package that includes all optional extras .
|
|
258
|
+
|
|
259
|
+
Wiki pages you might want to explore:
|
|
260
|
+
- [Overview (pydantic/pydantic-ai)](/wiki/pydantic/pydantic-ai#1)
|
|
261
|
+
|
|
262
|
+
View this search on DeepWiki: https://deepwiki.com/search/what-is-pydanticai-and-what-do_2dc46d92-288e-470b-b52e-24bb13f839c7
|
|
263
|
+
type: text
|
|
264
|
+
is_error: false
|
|
265
|
+
tool_use_id: mcptoolu_01SAss3KEwASziHZoMR6HcZU
|
|
266
|
+
type: mcp_tool_result
|
|
267
|
+
- text: |-
|
|
268
|
+
**Pydantic AI** is a Python agent framework for building production-grade applications with Generative AI. It provides:
|
|
269
|
+
|
|
270
|
+
- **Type-safe agents** with compile-time validation using `Agent[Deps, Output]`
|
|
271
|
+
- **Model-agnostic design** supporting 15+ LLM providers (OpenAI, Anthropic, Google, etc.)
|
|
272
|
+
- **Structured outputs** with automatic Pydantic validation and self-correction
|
|
273
|
+
- **Built-in observability** via OpenTelemetry and Logfire integration
|
|
274
|
+
- **Production tooling** including evaluation framework, durable execution, and tool system
|
|
275
|
+
|
|
276
|
+
The repo is organized as a monorepo with core packages like `pydantic-ai-slim` (core framework), `pydantic-graph` (execution engine), and `pydantic-evals` (evaluation tools). It emphasizes developer ergonomics and type safety, similar to Pydantic and FastAPI.
|
|
277
|
+
type: text
|
|
278
|
+
role: assistant
|
|
279
|
+
- content:
|
|
280
|
+
- text: How about the pydantic repo in the same org?
|
|
281
|
+
type: text
|
|
282
|
+
role: user
|
|
283
|
+
model: claude-sonnet-4-0
|
|
284
|
+
stream: false
|
|
285
|
+
thinking:
|
|
286
|
+
budget_tokens: 3000
|
|
287
|
+
type: enabled
|
|
288
|
+
uri: https://api.anthropic.com/v1/messages?beta=true
|
|
289
|
+
response:
|
|
290
|
+
headers:
|
|
291
|
+
connection:
|
|
292
|
+
- keep-alive
|
|
293
|
+
content-length:
|
|
294
|
+
- '6408'
|
|
295
|
+
content-type:
|
|
296
|
+
- application/json
|
|
297
|
+
strict-transport-security:
|
|
298
|
+
- max-age=31536000; includeSubDomains; preload
|
|
299
|
+
transfer-encoding:
|
|
300
|
+
- chunked
|
|
301
|
+
parsed_body:
|
|
302
|
+
content:
|
|
303
|
+
- signature: EtECCkYICBgCKkAkKy+K3Z/q4dGwZGr1MdsH8HLaULElUSaa/Y8A1L/Jp7y1AfJd1zrTL7Zfa2KoPr0HqO/AI/cJJreheuwcn/dWEgw0bPLie900a4h9wS0aDACnsdbr+adzpUyExiIwyuNjV82BVkK/kU+sMyrfbhgb6ob/DUgudJPaK5zR6cINAAGQnIy3iOXTwu3OUfPAKrgBzF9HD5HjiPSJdsxlkI0RA5Yjiol05/hR3fUB6WWrs0aouxIzlriJ6NzmzvqctkFJdRgAL9Mh06iK1A61PLyBWRdo1f5TBziFP1c6z7iQQzH9DdcaHvG8yLoaadbyTxMvTn2PtfEcSPjuZcLgv7QcF+HZXbDVjsHJW78OK2ta0M6/xuU1p4yG3qgoss3b0G6fAyvUVgVbb1wknkE/9W9gd2k/ZSh4P7F6AcvLTXQScTyMfWRtAWQqABgB
|
|
304
|
+
thinking: The user is asking about the pydantic repo in the same org, so that would be pydantic/pydantic. I should
|
|
305
|
+
ask about what this repository does and provide a short answer.
|
|
306
|
+
type: thinking
|
|
307
|
+
- id: mcptoolu_01A9RvAqDeoUnaMgQc6Nn75y
|
|
308
|
+
input:
|
|
309
|
+
question: What is Pydantic and what does this repository do?
|
|
310
|
+
repoName: pydantic/pydantic
|
|
311
|
+
name: ask_question
|
|
312
|
+
server_name: deepwiki
|
|
313
|
+
type: mcp_tool_use
|
|
314
|
+
- content:
|
|
315
|
+
- text: |
|
|
316
|
+
Pydantic is a Python library for data validation, parsing, and serialization using type hints . This repository, `pydantic/pydantic`, contains the source code for the Pydantic library itself, including its core validation logic, documentation, and continuous integration/continuous deployment (CI/CD) pipelines .
|
|
317
|
+
|
|
318
|
+
## What is Pydantic
|
|
319
|
+
|
|
320
|
+
Pydantic is designed to ensure that data conforms to specified types and constraints at runtime . It leverages Python type hints to define data schemas and provides mechanisms for data conversion and validation . The library's core validation logic is implemented in Rust within a separate package called `pydantic-core`, which contributes to its performance .
|
|
321
|
+
|
|
322
|
+
Pydantic offers several user-facing APIs for validation:
|
|
323
|
+
* `BaseModel`: Used for defining class-based models with fields, suitable for domain models, API schemas, and configuration .
|
|
324
|
+
* `TypeAdapter`: Provides a flexible way to validate and serialize arbitrary Python types, including primitive types and dataclasses .
|
|
325
|
+
* `@dataclass`: Enhances Python's built-in dataclasses with Pydantic's validation capabilities .
|
|
326
|
+
* `@validate_call`: Used for validating function arguments and return values .
|
|
327
|
+
|
|
328
|
+
## What this Repository Does
|
|
329
|
+
|
|
330
|
+
The `pydantic/pydantic` repository serves as the development hub for the Pydantic library. Its primary functions include:
|
|
331
|
+
|
|
332
|
+
### Core Library Development
|
|
333
|
+
The repository contains the Python source code for the Pydantic library, including modules for `BaseModel` , `Field` definitions , configuration management , and type adapters . It also includes internal modules responsible for model construction and schema generation .
|
|
334
|
+
|
|
335
|
+
### Documentation
|
|
336
|
+
The repository hosts the documentation for Pydantic, which is built using MkDocs . The documentation covers installation instructions , core concepts like models , fields, and JSON Schema generation . It also includes information on contributing to the project .
|
|
337
|
+
|
|
338
|
+
### Continuous Integration and Deployment (CI/CD)
|
|
339
|
+
The repository utilizes GitHub Actions for its CI/CD pipeline . This pipeline includes:
|
|
340
|
+
* **Linting**: Checks code quality and style .
|
|
341
|
+
* **Testing**: Runs a comprehensive test suite across multiple operating systems and Python versions . This includes memory profiling tests, Mypy plugin tests, and type-checking integration tests .
|
|
342
|
+
* **Coverage**: Aggregates test coverage data and posts comments to pull requests .
|
|
343
|
+
* **Release Process**: Automates publishing new versions to PyPI and sending release announcements .
|
|
344
|
+
* **Third-Party Integration Testing**: Tests Pydantic's compatibility with other popular libraries like FastAPI, SQLModel, and Beanie .
|
|
345
|
+
* **Dependency Management**: Uses `uv` for managing dependencies and includes workflows to check compatibility with various dependency versions .
|
|
346
|
+
* **Performance Benchmarking**: Utilizes CodSpeed to track and analyze performance .
|
|
347
|
+
|
|
348
|
+
## Versioning and Compatibility
|
|
349
|
+
Pydantic maintains strict version compatibility between the pure Python package (`pydantic`) and its Rust-based validation core (`pydantic-core`) . A `SystemError` is raised if there's a mismatch in `pydantic-core` versions, ensuring a stable environment . The `version_info()` function provides detailed version information for Pydantic and its dependencies .
|
|
350
|
+
|
|
351
|
+
Notes:
|
|
352
|
+
The `CITATION.cff` file also provides a concise description of Pydantic as "the most widely used data validation library for Python" . The `README.md` and `docs/index.md` files reiterate this, emphasizing its speed and extensibility .
|
|
353
|
+
|
|
354
|
+
Wiki pages you might want to explore:
|
|
355
|
+
- [Overview (pydantic/pydantic)](/wiki/pydantic/pydantic#1)
|
|
356
|
+
- [Development and Deployment (pydantic/pydantic)](/wiki/pydantic/pydantic#7)
|
|
357
|
+
|
|
358
|
+
View this search on DeepWiki: https://deepwiki.com/search/what-is-pydantic-and-what-does_dab96efa-752a-4688-a630-3f4658084a88
|
|
359
|
+
type: text
|
|
360
|
+
is_error: false
|
|
361
|
+
tool_use_id: mcptoolu_01A9RvAqDeoUnaMgQc6Nn75y
|
|
362
|
+
type: mcp_tool_result
|
|
363
|
+
- text: |-
|
|
364
|
+
**Pydantic** is Python's most widely used data validation library for parsing, validation, and serialization using type hints. The repository contains:
|
|
365
|
+
|
|
366
|
+
**Core Features:**
|
|
367
|
+
- **Data validation** with automatic type conversion and constraint checking
|
|
368
|
+
- **Multiple APIs**: `BaseModel` for class-based models, `TypeAdapter` for arbitrary types, `@dataclass` decorator, and `@validate_call` for functions
|
|
369
|
+
- **High performance** via Rust-based validation core (`pydantic-core`)
|
|
370
|
+
- **JSON Schema generation** and comprehensive serialization support
|
|
371
|
+
|
|
372
|
+
**Repository Contents:**
|
|
373
|
+
- Python source code for the main Pydantic library
|
|
374
|
+
- Comprehensive documentation built with MkDocs
|
|
375
|
+
- Extensive CI/CD pipeline with testing across multiple Python versions and OS
|
|
376
|
+
- Integration testing with popular libraries (FastAPI, SQLModel, etc.)
|
|
377
|
+
- Performance benchmarking and dependency compatibility checks
|
|
378
|
+
|
|
379
|
+
Pydantic ensures runtime data integrity through type hints and is foundational to many Python frameworks, especially in web APIs and data processing applications.
|
|
380
|
+
type: text
|
|
381
|
+
id: msg_01DSGib8F7nNoYprfYSGp1sd
|
|
382
|
+
model: claude-sonnet-4-20250514
|
|
383
|
+
role: assistant
|
|
384
|
+
stop_reason: end_turn
|
|
385
|
+
stop_sequence: null
|
|
386
|
+
type: message
|
|
387
|
+
usage:
|
|
388
|
+
cache_creation:
|
|
389
|
+
ephemeral_1h_input_tokens: 0
|
|
390
|
+
ephemeral_5m_input_tokens: 0
|
|
391
|
+
cache_creation_input_tokens: 0
|
|
392
|
+
cache_read_input_tokens: 0
|
|
393
|
+
input_tokens: 5262
|
|
394
|
+
output_tokens: 369
|
|
395
|
+
server_tool_use:
|
|
396
|
+
web_search_requests: 0
|
|
397
|
+
service_tier: standard
|
|
398
|
+
status:
|
|
399
|
+
code: 200
|
|
400
|
+
message: OK
|
|
401
|
+
version: 1
|