pydantic-ai 1.9.1__tar.gz → 1.10.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.
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/PKG-INFO +10 -10
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_openai_responses.py +2 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_ag_ui.py +191 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_messages.py +2 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_streaming.py +224 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/typed_agent.py +1 -1
- pydantic_ai-1.10.0/tests/typed_deps.py +86 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/.gitignore +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/LICENSE +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/Makefile +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/README.md +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/pyproject.toml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/__init__.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/assets/dummy.pdf +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/assets/dummy.txt +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/assets/kiwi.png +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/assets/marcelo.mp3 +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/assets/product_name.txt +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/assets/small_video.mp4 +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_complex_agent_run.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_complex_agent_run_in_workflow.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_complex_agent_run_stream_in_workflow.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_agent_iter.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_agent_iter_in_workflow.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_agent_override_deps_in_workflow.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_agent_override_tools_in_workflow.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_agent_run.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_agent_run_in_workflow_with_toolsets.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_agent_run_stream.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_agent_run_sync.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_agent_run_sync_in_workflow.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_agent_with_dataclass_deps_as_dict.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_agent_with_hitl_tool.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_agent_with_hitl_tool_sync.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_agent_with_model_retry.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_agent_with_non_dict_deps.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_agent_with_unserializable_deps_type.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_model_stream_direct.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_multiple_agents.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_simple_agent_run_in_workflow.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_mcp/test_agent_with_server_not_running.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_mcp/test_agent_with_stdio_server.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_mcp/test_tool_returning_audio_resource.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_mcp/test_tool_returning_audio_resource_link.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_mcp/test_tool_returning_dict.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_mcp/test_tool_returning_error.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_mcp/test_tool_returning_image.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_mcp/test_tool_returning_image_resource.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_mcp/test_tool_returning_image_resource_link.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_mcp/test_tool_returning_multiple_items.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_mcp/test_tool_returning_none.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_mcp/test_tool_returning_str.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_mcp/test_tool_returning_text_resource.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_mcp/test_tool_returning_text_resource_link.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_mcp/test_tool_returning_unstructured_dict.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_complex_agent_run_in_flow.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_iter_in_flow.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_multiple_agents.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_prefect_agent_iter.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_prefect_agent_override_deps.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_prefect_agent_override_tools.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_prefect_agent_override_toolsets.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_prefect_agent_run.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_prefect_agent_run_stream.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_prefect_agent_run_stream_events.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_prefect_agent_run_sync.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_prefect_agent_with_hitl_tool.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_prefect_agent_with_hitl_tool_sync.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_prefect_agent_with_model_retry.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_prefect_agent_with_unserializable_deps.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_run_stream_in_flow.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_run_sync_in_flow.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_simple_agent_run_in_flow.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_settings/test_stop_settings[anthropic].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_settings/test_stop_settings[bedrock].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_settings/test_stop_settings[cohere].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_settings/test_stop_settings[gemini].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_settings/test_stop_settings[google].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_settings/test_stop_settings[groq].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_settings/test_stop_settings[mistral].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_settings/test_stop_settings[openai].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_complex_agent_run.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_complex_agent_run_in_workflow.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_complex_agent_run_stream_in_workflow.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_logfire_plugin.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_multiple_agents.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_simple_agent_run_in_workflow.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_temporal_agent_iter.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_temporal_agent_override_deps_in_workflow.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_temporal_agent_run.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_temporal_agent_run_stream.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_temporal_agent_run_stream_events.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_temporal_agent_run_sync.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_temporal_agent_sync_tool_activity_disabled.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_temporal_agent_with_dataclass_deps_as_dict.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_temporal_agent_with_hitl_tool.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_temporal_agent_with_model_retry.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_temporal_agent_with_non_dict_deps.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_temporal_agent_with_unserializable_deps_type.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_web_search_agent_run_in_workflow.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_vercel_ai/test_run.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/conftest.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/evals/__init__.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/evals/test_dataset.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/evals/test_evaluator_base.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/evals/test_evaluator_common.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/evals/test_evaluator_context.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/evals/test_evaluator_spec.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/evals/test_evaluators.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/evals/test_llm_as_a_judge.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/evals/test_otel.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/evals/test_render_numbers.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/evals/test_reporting.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/evals/test_reports.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/evals/test_utils.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/evals/utils.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/example_modules/README.md +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/example_modules/bank_database.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/example_modules/fake_database.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/example_modules/mcp_server.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/example_modules/weather_service.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/ext/__init__.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/ext/test_langchain.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/__init__.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/__init__.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/test_broadcast_and_spread.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/test_decisions.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/test_edge_cases.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/test_edge_labels.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/test_graph_builder.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/test_graph_edge_cases.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/test_graph_execution.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/test_graph_iteration.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/test_joins_and_reducers.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/test_mermaid_rendering.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/test_node_and_step.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/test_parent_forks.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/test_paths.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/test_util.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/test_v1_v2_integration.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/test_file_persistence.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/test_graph.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/test_mermaid.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/test_persistence.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/test_state.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/test_utils.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/import_examples.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/json_body_serializer.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/mcp_server.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/__init__.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_code_execution_tool.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_code_execution_tool_stream.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_mcp_servers.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_mcp_servers_stream.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_memory_tool.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_empty_message_on_history.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_instructions.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_from_other_model.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_redacted.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_redacted_stream.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_stream.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_web_search_tool_stream.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_output_tool_with_thinking.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output_multiple.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_server_tool_pass_history_to_another_provider.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_server_tool_receive_history_from_another_provider.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_text_output_function.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_text_parts_ahead_of_built_in_tool_call.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_tool_output.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_tool_with_thinking.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_web_search_tool.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_web_search_tool_stream.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_document_binary_content_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_document_url_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_extra_headers.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_image_url_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_image_url_input_invalid_mime_type.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_multiple_parallel_tool_calls.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_text_document_url_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_anthropic_tool_with_thinking.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_empty_system_prompt.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_anthropic_model_without_tools.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_guardrail_config.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_instructions.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_iter_stream.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_max_tokens.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_other_parameters.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_performance_config.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_retry.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_stream.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_stream_empty_text_delta.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_structured_output.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_anthropic.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_deepseek.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_from_other_model.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_redacted.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_redacted_stream.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_stream.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_top_p.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_multiple_documents_in_history.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_document_url_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_image_url_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_text_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_text_document_url_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_video_url_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_cohere/test_cohere_model_instructions.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_cohere/test_cohere_model_thinking_part.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_cohere/test_request_simple_success_with_vcr.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_part.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_stream.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_download_item/test_download_item_application_octet_stream.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_download_item/test_download_item_audio_mpeg.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_download_item/test_download_item_no_content_type.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_document_url_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_false.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_true.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_gemini_drop_exclusive_maximum.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_gemini_exclusive_minimum_and_maximum.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_gemini_model_instructions.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_gemini_model_thinking_part.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_gemini_native_output.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_gemini_native_output_multiple.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_gemini_prompted_output.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_multiple.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_with_tools.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_gemini_text_output_function.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_gemini_tool_config_any_with_tool_without_args.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_gemini_tool_output.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_gemini_youtube_video_url_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_image_url_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_labels_are_ignored_with_gla_provider.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_video_url_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini_vertex/test_labels.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl (gs)].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl (gs)].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl (gs)].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (YouTube)].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (gs)].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini_vertex/test_url_input_force_download.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_builtin_tools_with_other_tools.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_httpx_client_is_not_closed.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_image_and_text_output.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_image_generation.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_image_generation_stream.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_image_generation_with_text.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_image_or_text_output.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_builtin_code_execution_stream.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_code_execution_tool.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_document_url_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_empty_assistant_response.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_empty_user_prompt.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_image_url_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_instructions.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_iter_stream.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_max_tokens.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_multiple_documents_in_history.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_receive_web_search_history_from_another_provider.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_retry.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_safety_settings.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_server_tool_receive_history_from_another_provider.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_stream.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_structured_output.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_text_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_text_document_url_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_thinking_config.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_thinking_part.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_thinking_part_from_other_model.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_thinking_part_iter.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_top_p.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_url_context_tool.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_usage_limit_exceeded.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_usage_limit_not_exceeded.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_vertex_labels.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_vertex_provider.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input_with_vendor_metadata.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_video_url_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_web_search_tool.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_web_search_tool_stream.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_youtube_video_url_input_with_vendor_metadata.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_multiple_images.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_native_output.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_native_output_multiple.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_prompted_output.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_prompted_output_multiple.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_prompted_output_with_tools.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_text_output_function.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_timeout.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_tool_config_any_with_tool_without_args.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_tool_output.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl (gs)].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl (gs)].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl (gs)].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (YouTube)].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (gs)].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_url_input_force_download.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_vertexai_image_generation.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_vertexai_model_usage_limit_exceeded.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_groq/test_extra_headers.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_groq/test_groq_model_instructions.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_groq/test_groq_model_thinking_part.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_groq/test_groq_model_thinking_part_iter.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_groq/test_groq_model_web_search_tool.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_groq/test_groq_model_web_search_tool_stream.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_groq/test_groq_native_output.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_groq/test_groq_prompted_output.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_groq/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_groq/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_groq/test_image_url_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_groq/test_tool_regular_error.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_groq/test_tool_use_failed_error.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_groq/test_tool_use_failed_error_streaming.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_huggingface/test_hf_model_instructions.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_huggingface/test_hf_model_thinking_part.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_huggingface/test_hf_model_thinking_part_iter.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_huggingface/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_huggingface/test_image_url_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[Qwen-Qwen2.5-72B-Instruct].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[deepseek-ai-DeepSeek-R1-0528].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[meta-llama-Llama-3.3-70B-Instruct].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_huggingface/test_request_simple_success_with_vcr.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_huggingface/test_request_simple_usage.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_huggingface/test_simple_completion.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_huggingface/test_stream_completion.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_mistral/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_mistral/test_mistral_model_instructions.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part_iter.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_model_names/test_known_model_names.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_audio_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_compatible_api_with_tool_calls_without_id.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_document_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_document_as_binary_content_input_with_tool.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_document_url_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_extra_headers.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_image_url_input_force_download.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_image_url_input_force_download_response_api.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_image_url_tool_response.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_invalid_response.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4.5-preview].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4o-mini].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_max_completion_tokens[o3-mini].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_multiple_agent_tool_calls.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_audio_url_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_instructions.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_instructions_with_tool_calls_keep_instructions.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_model_cerebras_provider.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_model_cerebras_provider_harmony.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_model_cerebras_provider_qwen_3_coder.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_model_settings_temperature_ignored_on_gpt_5.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_model_thinking_part.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_model_without_system_prompt.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_native_output.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_native_output_multiple.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[developer].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[system].yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_prompted_output.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_prompted_output_multiple.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_text_output_function.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_tool_output.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_web_search_tool.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_web_search_tool_model_not_supported.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_web_search_tool_with_user_location.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_reasoning_model_with_temperature.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_system_prompt_role_o1_mini.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_text_document_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_text_document_url_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_text_response.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_user_id.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_valid_response.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_audio_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_native_output.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_native_output_multiple.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_previous_response_id.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_previous_response_id_auto_mode.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_code_execution_return_image.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_code_execution_return_image_stream.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_as_binary_content_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_url_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_history_with_combined_tool_call_id.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_and_text_output.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_jpeg.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_stream.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_tool_without_image_output.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_with_native_output.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_with_prompted_output.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_with_tool_output.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_with_tools.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_or_text_output.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_url_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools_web_search.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_http_error.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_instructions.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_mcp_server_tool.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_mcp_server_tool_stream.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_mcp_server_tool_with_connector.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_retry.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response_with_tool_call.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_thinking_part.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_stream.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_with_invalid_region.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_with_user_location.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_multiple_images.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_non_reasoning_model_no_item_ids.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_output_type.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_effort.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_generate_summary.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_requires_function_call_status_none.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_stream.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_streaming_usage.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_system_prompt.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_text_document_url_input.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_part_from_other_model.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_part_iter.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_with_code_execution_tool.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_with_code_execution_tool_stream.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_with_modified_history.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_with_tool_calls.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_verbosity.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_prompted_output.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_prompted_output_multiple.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_reasoning_model_with_temperature.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_text_output_function.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_tool_output.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/mock_async_stream.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/mock_openai.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_anthropic.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_bedrock.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_cohere.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_deepseek.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_download_item.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_fallback.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_gemini.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_gemini_vertex.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_google.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_groq.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_huggingface.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_instrumented.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_mcp_sampling.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_mistral.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_model.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_model_function.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_model_names.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_model_request_parameters.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_model_settings.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_model_test.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_openai.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_outlines.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/parts_from_messages.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/__init__.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/cassettes/test_azure/test_azure_provider_call.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_anthropic.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_bedrock.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_google_vertex.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_groq.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_openai.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_openai_responses.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/cassettes/test_google_vertex/test_vertexai_provider.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/cassettes/test_heroku/test_heroku_model_provider_claude_3_7_sonnet.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/cassettes/test_openrouter/test_openrouter_with_google_model.yaml +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_anthropic.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_azure.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_bedrock.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_cerebras.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_cohere.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_deepseek.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_fireworks.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_gateway.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_github.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_google_gla.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_google_vertex.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_grok.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_groq.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_heroku.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_huggingface.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_litellm.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_mistral.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_moonshotai.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_nebius.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_ollama.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_openai.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_openrouter.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_outlines.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_ovhcloud.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_provider_names.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_together.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_vercel.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_a2a.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_agent.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_builtin_tools.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_cli.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_dbos.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_deps.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_direct.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_examples.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_fastmcp.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_format_as_xml.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_function_schema.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_history_processor.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_json_body_serializer.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_live.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_logfire.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_mcp.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_parts_manager.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_prefect.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_settings.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_temporal.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_tenacity.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_thinking_part.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_tools.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_toolsets.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_ui.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_usage_limits.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_utils.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_vercel_ai.py +0 -0
- {pydantic_ai-1.9.1 → pydantic_ai-1.10.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.10.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,25 +26,25 @@ 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,fastmcp,google,groq,huggingface,logfire,mcp,mistral,openai,retries,temporal,ui,vertexai]==1.
|
|
29
|
+
Requires-Dist: pydantic-ai-slim[ag-ui,anthropic,bedrock,cli,cohere,evals,fastmcp,google,groq,huggingface,logfire,mcp,mistral,openai,retries,temporal,ui,vertexai]==1.10.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.10.0; extra == 'dbos'
|
|
34
34
|
Provides-Extra: examples
|
|
35
|
-
Requires-Dist: pydantic-ai-examples==1.
|
|
35
|
+
Requires-Dist: pydantic-ai-examples==1.10.0; extra == 'examples'
|
|
36
36
|
Provides-Extra: outlines-llamacpp
|
|
37
|
-
Requires-Dist: pydantic-ai-slim[outlines-llamacpp]==1.
|
|
37
|
+
Requires-Dist: pydantic-ai-slim[outlines-llamacpp]==1.10.0; extra == 'outlines-llamacpp'
|
|
38
38
|
Provides-Extra: outlines-mlxlm
|
|
39
|
-
Requires-Dist: pydantic-ai-slim[outlines-mlxlm]==1.
|
|
39
|
+
Requires-Dist: pydantic-ai-slim[outlines-mlxlm]==1.10.0; extra == 'outlines-mlxlm'
|
|
40
40
|
Provides-Extra: outlines-sglang
|
|
41
|
-
Requires-Dist: pydantic-ai-slim[outlines-sglang]==1.
|
|
41
|
+
Requires-Dist: pydantic-ai-slim[outlines-sglang]==1.10.0; extra == 'outlines-sglang'
|
|
42
42
|
Provides-Extra: outlines-transformers
|
|
43
|
-
Requires-Dist: pydantic-ai-slim[outlines-transformers]==1.
|
|
43
|
+
Requires-Dist: pydantic-ai-slim[outlines-transformers]==1.10.0; extra == 'outlines-transformers'
|
|
44
44
|
Provides-Extra: outlines-vllm-offline
|
|
45
|
-
Requires-Dist: pydantic-ai-slim[outlines-vllm-offline]==1.
|
|
45
|
+
Requires-Dist: pydantic-ai-slim[outlines-vllm-offline]==1.10.0; extra == 'outlines-vllm-offline'
|
|
46
46
|
Provides-Extra: prefect
|
|
47
|
-
Requires-Dist: pydantic-ai-slim[prefect]==1.
|
|
47
|
+
Requires-Dist: pydantic-ai-slim[prefect]==1.10.0; extra == 'prefect'
|
|
48
48
|
Description-Content-Type: text/markdown
|
|
49
49
|
|
|
50
50
|
<div align="center">
|
|
@@ -78,6 +78,8 @@ def test_openai_responses_model(env: TestEnv):
|
|
|
78
78
|
model = OpenAIResponsesModel('gpt-4o')
|
|
79
79
|
assert model.model_name == 'gpt-4o'
|
|
80
80
|
assert model.system == 'openai'
|
|
81
|
+
assert model.base_url == 'https://api.openai.com/v1/'
|
|
82
|
+
assert model.client.api_key == 'test'
|
|
81
83
|
|
|
82
84
|
|
|
83
85
|
async def test_openai_responses_model_simple_response(allow_model_requests: None, openai_api_key: str):
|
|
@@ -19,6 +19,8 @@ from pydantic import BaseModel
|
|
|
19
19
|
from pydantic_ai import (
|
|
20
20
|
BuiltinToolCallPart,
|
|
21
21
|
BuiltinToolReturnPart,
|
|
22
|
+
FunctionToolCallEvent,
|
|
23
|
+
FunctionToolResultEvent,
|
|
22
24
|
ModelMessage,
|
|
23
25
|
ModelRequest,
|
|
24
26
|
ModelResponse,
|
|
@@ -29,6 +31,7 @@ from pydantic_ai import (
|
|
|
29
31
|
TextPart,
|
|
30
32
|
TextPartDelta,
|
|
31
33
|
ToolCallPart,
|
|
34
|
+
ToolCallPartDelta,
|
|
32
35
|
ToolReturn,
|
|
33
36
|
ToolReturnPart,
|
|
34
37
|
UserPromptPart,
|
|
@@ -1661,6 +1664,194 @@ async def test_event_stream_back_to_back_text():
|
|
|
1661
1664
|
)
|
|
1662
1665
|
|
|
1663
1666
|
|
|
1667
|
+
async def test_event_stream_multiple_responses_with_tool_calls():
|
|
1668
|
+
async def event_generator():
|
|
1669
|
+
yield PartStartEvent(index=0, part=TextPart(content='Hello'))
|
|
1670
|
+
yield PartDeltaEvent(index=0, delta=TextPartDelta(content_delta=' world'))
|
|
1671
|
+
yield PartEndEvent(index=0, part=TextPart(content='Hello world'), next_part_kind='tool-call')
|
|
1672
|
+
|
|
1673
|
+
yield PartStartEvent(
|
|
1674
|
+
index=1,
|
|
1675
|
+
part=ToolCallPart(tool_name='tool_call_1', args='{}', tool_call_id='tool_call_1'),
|
|
1676
|
+
previous_part_kind='text',
|
|
1677
|
+
)
|
|
1678
|
+
yield PartDeltaEvent(
|
|
1679
|
+
index=1, delta=ToolCallPartDelta(args_delta='{"query": "Hello world"}', tool_call_id='tool_call_1')
|
|
1680
|
+
)
|
|
1681
|
+
yield PartEndEvent(
|
|
1682
|
+
index=1,
|
|
1683
|
+
part=ToolCallPart(tool_name='tool_call_1', args='{"query": "Hello world"}', tool_call_id='tool_call_1'),
|
|
1684
|
+
next_part_kind='tool-call',
|
|
1685
|
+
)
|
|
1686
|
+
|
|
1687
|
+
yield PartStartEvent(
|
|
1688
|
+
index=2,
|
|
1689
|
+
part=ToolCallPart(tool_name='tool_call_2', args='{}', tool_call_id='tool_call_2'),
|
|
1690
|
+
previous_part_kind='tool-call',
|
|
1691
|
+
)
|
|
1692
|
+
yield PartDeltaEvent(
|
|
1693
|
+
index=2, delta=ToolCallPartDelta(args_delta='{"query": "Goodbye world"}', tool_call_id='tool_call_2')
|
|
1694
|
+
)
|
|
1695
|
+
yield PartEndEvent(
|
|
1696
|
+
index=2,
|
|
1697
|
+
part=ToolCallPart(tool_name='tool_call_2', args='{"query": "Hello world"}', tool_call_id='tool_call_2'),
|
|
1698
|
+
next_part_kind=None,
|
|
1699
|
+
)
|
|
1700
|
+
|
|
1701
|
+
yield FunctionToolCallEvent(
|
|
1702
|
+
part=ToolCallPart(tool_name='tool_call_1', args='{"query": "Hello world"}', tool_call_id='tool_call_1')
|
|
1703
|
+
)
|
|
1704
|
+
yield FunctionToolCallEvent(
|
|
1705
|
+
part=ToolCallPart(tool_name='tool_call_2', args='{"query": "Goodbye world"}', tool_call_id='tool_call_2')
|
|
1706
|
+
)
|
|
1707
|
+
|
|
1708
|
+
yield FunctionToolResultEvent(
|
|
1709
|
+
result=ToolReturnPart(tool_name='tool_call_1', content='Hi!', tool_call_id='tool_call_1')
|
|
1710
|
+
)
|
|
1711
|
+
yield FunctionToolResultEvent(
|
|
1712
|
+
result=ToolReturnPart(tool_name='tool_call_2', content='Bye!', tool_call_id='tool_call_2')
|
|
1713
|
+
)
|
|
1714
|
+
|
|
1715
|
+
yield PartStartEvent(
|
|
1716
|
+
index=0,
|
|
1717
|
+
part=ToolCallPart(tool_name='tool_call_3', args='{}', tool_call_id='tool_call_3'),
|
|
1718
|
+
previous_part_kind=None,
|
|
1719
|
+
)
|
|
1720
|
+
yield PartDeltaEvent(
|
|
1721
|
+
index=0, delta=ToolCallPartDelta(args_delta='{"query": "Hello world"}', tool_call_id='tool_call_3')
|
|
1722
|
+
)
|
|
1723
|
+
yield PartEndEvent(
|
|
1724
|
+
index=0,
|
|
1725
|
+
part=ToolCallPart(tool_name='tool_call_3', args='{"query": "Hello world"}', tool_call_id='tool_call_3'),
|
|
1726
|
+
next_part_kind='tool-call',
|
|
1727
|
+
)
|
|
1728
|
+
|
|
1729
|
+
yield PartStartEvent(
|
|
1730
|
+
index=1,
|
|
1731
|
+
part=ToolCallPart(tool_name='tool_call_4', args='{}', tool_call_id='tool_call_4'),
|
|
1732
|
+
previous_part_kind='tool-call',
|
|
1733
|
+
)
|
|
1734
|
+
yield PartDeltaEvent(
|
|
1735
|
+
index=1, delta=ToolCallPartDelta(args_delta='{"query": "Goodbye world"}', tool_call_id='tool_call_4')
|
|
1736
|
+
)
|
|
1737
|
+
yield PartEndEvent(
|
|
1738
|
+
index=1,
|
|
1739
|
+
part=ToolCallPart(tool_name='tool_call_4', args='{"query": "Goodbye world"}', tool_call_id='tool_call_4'),
|
|
1740
|
+
next_part_kind=None,
|
|
1741
|
+
)
|
|
1742
|
+
|
|
1743
|
+
yield FunctionToolCallEvent(
|
|
1744
|
+
part=ToolCallPart(tool_name='tool_call_3', args='{"query": "Hello world"}', tool_call_id='tool_call_3')
|
|
1745
|
+
)
|
|
1746
|
+
yield FunctionToolCallEvent(
|
|
1747
|
+
part=ToolCallPart(tool_name='tool_call_4', args='{"query": "Goodbye world"}', tool_call_id='tool_call_4')
|
|
1748
|
+
)
|
|
1749
|
+
|
|
1750
|
+
yield FunctionToolResultEvent(
|
|
1751
|
+
result=ToolReturnPart(tool_name='tool_call_3', content='Hi!', tool_call_id='tool_call_3')
|
|
1752
|
+
)
|
|
1753
|
+
yield FunctionToolResultEvent(
|
|
1754
|
+
result=ToolReturnPart(tool_name='tool_call_4', content='Bye!', tool_call_id='tool_call_4')
|
|
1755
|
+
)
|
|
1756
|
+
|
|
1757
|
+
run_input = create_input(
|
|
1758
|
+
UserMessage(
|
|
1759
|
+
id='msg_1',
|
|
1760
|
+
content='Tell me about Hello World',
|
|
1761
|
+
),
|
|
1762
|
+
)
|
|
1763
|
+
event_stream = AGUIEventStream(run_input=run_input)
|
|
1764
|
+
events = [
|
|
1765
|
+
json.loads(event.removeprefix('data: '))
|
|
1766
|
+
async for event in event_stream.encode_stream(event_stream.transform_stream(event_generator()))
|
|
1767
|
+
]
|
|
1768
|
+
|
|
1769
|
+
assert events == snapshot(
|
|
1770
|
+
[
|
|
1771
|
+
{
|
|
1772
|
+
'type': 'RUN_STARTED',
|
|
1773
|
+
'threadId': (thread_id := IsSameStr()),
|
|
1774
|
+
'runId': (run_id := IsSameStr()),
|
|
1775
|
+
},
|
|
1776
|
+
{'type': 'TEXT_MESSAGE_START', 'messageId': (message_id := IsSameStr()), 'role': 'assistant'},
|
|
1777
|
+
{'type': 'TEXT_MESSAGE_CONTENT', 'messageId': message_id, 'delta': 'Hello'},
|
|
1778
|
+
{'type': 'TEXT_MESSAGE_CONTENT', 'messageId': message_id, 'delta': ' world'},
|
|
1779
|
+
{'type': 'TEXT_MESSAGE_END', 'messageId': message_id},
|
|
1780
|
+
{
|
|
1781
|
+
'type': 'TOOL_CALL_START',
|
|
1782
|
+
'toolCallId': 'tool_call_1',
|
|
1783
|
+
'toolCallName': 'tool_call_1',
|
|
1784
|
+
'parentMessageId': message_id,
|
|
1785
|
+
},
|
|
1786
|
+
{'type': 'TOOL_CALL_ARGS', 'toolCallId': 'tool_call_1', 'delta': '{}'},
|
|
1787
|
+
{'type': 'TOOL_CALL_ARGS', 'toolCallId': 'tool_call_1', 'delta': '{"query": "Hello world"}'},
|
|
1788
|
+
{'type': 'TOOL_CALL_END', 'toolCallId': 'tool_call_1'},
|
|
1789
|
+
{
|
|
1790
|
+
'type': 'TOOL_CALL_START',
|
|
1791
|
+
'toolCallId': 'tool_call_2',
|
|
1792
|
+
'toolCallName': 'tool_call_2',
|
|
1793
|
+
'parentMessageId': message_id,
|
|
1794
|
+
},
|
|
1795
|
+
{'type': 'TOOL_CALL_ARGS', 'toolCallId': 'tool_call_2', 'delta': '{}'},
|
|
1796
|
+
{'type': 'TOOL_CALL_ARGS', 'toolCallId': 'tool_call_2', 'delta': '{"query": "Goodbye world"}'},
|
|
1797
|
+
{'type': 'TOOL_CALL_END', 'toolCallId': 'tool_call_2'},
|
|
1798
|
+
{
|
|
1799
|
+
'type': 'TOOL_CALL_RESULT',
|
|
1800
|
+
'messageId': IsStr(),
|
|
1801
|
+
'toolCallId': 'tool_call_1',
|
|
1802
|
+
'content': 'Hi!',
|
|
1803
|
+
'role': 'tool',
|
|
1804
|
+
},
|
|
1805
|
+
{
|
|
1806
|
+
'type': 'TOOL_CALL_RESULT',
|
|
1807
|
+
'messageId': (result_message_id := IsSameStr()),
|
|
1808
|
+
'toolCallId': 'tool_call_2',
|
|
1809
|
+
'content': 'Bye!',
|
|
1810
|
+
'role': 'tool',
|
|
1811
|
+
},
|
|
1812
|
+
{
|
|
1813
|
+
'type': 'TOOL_CALL_START',
|
|
1814
|
+
'toolCallId': 'tool_call_3',
|
|
1815
|
+
'toolCallName': 'tool_call_3',
|
|
1816
|
+
'parentMessageId': (new_message_id := IsSameStr()),
|
|
1817
|
+
},
|
|
1818
|
+
{'type': 'TOOL_CALL_ARGS', 'toolCallId': 'tool_call_3', 'delta': '{}'},
|
|
1819
|
+
{'type': 'TOOL_CALL_ARGS', 'toolCallId': 'tool_call_3', 'delta': '{"query": "Hello world"}'},
|
|
1820
|
+
{'type': 'TOOL_CALL_END', 'toolCallId': 'tool_call_3'},
|
|
1821
|
+
{
|
|
1822
|
+
'type': 'TOOL_CALL_START',
|
|
1823
|
+
'toolCallId': 'tool_call_4',
|
|
1824
|
+
'toolCallName': 'tool_call_4',
|
|
1825
|
+
'parentMessageId': new_message_id,
|
|
1826
|
+
},
|
|
1827
|
+
{'type': 'TOOL_CALL_ARGS', 'toolCallId': 'tool_call_4', 'delta': '{}'},
|
|
1828
|
+
{'type': 'TOOL_CALL_ARGS', 'toolCallId': 'tool_call_4', 'delta': '{"query": "Goodbye world"}'},
|
|
1829
|
+
{'type': 'TOOL_CALL_END', 'toolCallId': 'tool_call_4'},
|
|
1830
|
+
{
|
|
1831
|
+
'type': 'TOOL_CALL_RESULT',
|
|
1832
|
+
'messageId': IsStr(),
|
|
1833
|
+
'toolCallId': 'tool_call_3',
|
|
1834
|
+
'content': 'Hi!',
|
|
1835
|
+
'role': 'tool',
|
|
1836
|
+
},
|
|
1837
|
+
{
|
|
1838
|
+
'type': 'TOOL_CALL_RESULT',
|
|
1839
|
+
'messageId': IsStr(),
|
|
1840
|
+
'toolCallId': 'tool_call_4',
|
|
1841
|
+
'content': 'Bye!',
|
|
1842
|
+
'role': 'tool',
|
|
1843
|
+
},
|
|
1844
|
+
{
|
|
1845
|
+
'type': 'RUN_FINISHED',
|
|
1846
|
+
'threadId': thread_id,
|
|
1847
|
+
'runId': run_id,
|
|
1848
|
+
},
|
|
1849
|
+
]
|
|
1850
|
+
)
|
|
1851
|
+
|
|
1852
|
+
assert result_message_id != new_message_id
|
|
1853
|
+
|
|
1854
|
+
|
|
1664
1855
|
async def test_handle_ag_ui_request():
|
|
1665
1856
|
agent = Agent(model=TestModel())
|
|
1666
1857
|
run_input = create_input(
|
|
@@ -147,6 +147,7 @@ def test_binary_content_video(media_type: str, format: str):
|
|
|
147
147
|
('application/pdf', 'pdf'),
|
|
148
148
|
('text/plain', 'txt'),
|
|
149
149
|
('text/csv', 'csv'),
|
|
150
|
+
('application/msword', 'doc'),
|
|
150
151
|
('application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'docx'),
|
|
151
152
|
('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'xlsx'),
|
|
152
153
|
('text/html', 'html'),
|
|
@@ -209,6 +210,7 @@ _url_formats = [
|
|
|
209
210
|
pytest.param(DocumentUrl('foobar.pdf'), 'application/pdf', 'pdf', id='pdf'),
|
|
210
211
|
pytest.param(DocumentUrl('foobar.txt'), 'text/plain', 'txt', id='txt'),
|
|
211
212
|
pytest.param(DocumentUrl('foobar.csv'), 'text/csv', 'csv', id='csv'),
|
|
213
|
+
pytest.param(DocumentUrl('foobar.doc'), 'application/msword', 'doc', id='doc'),
|
|
212
214
|
pytest.param(
|
|
213
215
|
DocumentUrl('foobar.docx'),
|
|
214
216
|
'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
|
@@ -135,6 +135,96 @@ async def test_streamed_text_response():
|
|
|
135
135
|
)
|
|
136
136
|
|
|
137
137
|
|
|
138
|
+
def test_streamed_text_sync_response():
|
|
139
|
+
m = TestModel()
|
|
140
|
+
|
|
141
|
+
test_agent = Agent(m)
|
|
142
|
+
assert test_agent.name is None
|
|
143
|
+
|
|
144
|
+
@test_agent.tool_plain
|
|
145
|
+
async def ret_a(x: str) -> str:
|
|
146
|
+
return f'{x}-apple'
|
|
147
|
+
|
|
148
|
+
result = test_agent.run_stream_sync('Hello')
|
|
149
|
+
assert test_agent.name == 'test_agent'
|
|
150
|
+
assert not result.is_complete
|
|
151
|
+
assert result.all_messages() == snapshot(
|
|
152
|
+
[
|
|
153
|
+
ModelRequest(parts=[UserPromptPart(content='Hello', timestamp=IsNow(tz=timezone.utc))]),
|
|
154
|
+
ModelResponse(
|
|
155
|
+
parts=[ToolCallPart(tool_name='ret_a', args={'x': 'a'}, tool_call_id=IsStr())],
|
|
156
|
+
usage=RequestUsage(input_tokens=51),
|
|
157
|
+
model_name='test',
|
|
158
|
+
timestamp=IsNow(tz=timezone.utc),
|
|
159
|
+
provider_name='test',
|
|
160
|
+
),
|
|
161
|
+
ModelRequest(
|
|
162
|
+
parts=[
|
|
163
|
+
ToolReturnPart(
|
|
164
|
+
tool_name='ret_a', content='a-apple', timestamp=IsNow(tz=timezone.utc), tool_call_id=IsStr()
|
|
165
|
+
)
|
|
166
|
+
]
|
|
167
|
+
),
|
|
168
|
+
]
|
|
169
|
+
)
|
|
170
|
+
assert result.new_messages() == result.all_messages()
|
|
171
|
+
assert result.usage() == snapshot(
|
|
172
|
+
RunUsage(
|
|
173
|
+
requests=2,
|
|
174
|
+
input_tokens=103,
|
|
175
|
+
output_tokens=5,
|
|
176
|
+
tool_calls=1,
|
|
177
|
+
)
|
|
178
|
+
)
|
|
179
|
+
response = result.get_output()
|
|
180
|
+
assert response == snapshot('{"ret_a":"a-apple"}')
|
|
181
|
+
assert result.is_complete
|
|
182
|
+
assert result.timestamp() == IsNow(tz=timezone.utc)
|
|
183
|
+
assert result.response == snapshot(
|
|
184
|
+
ModelResponse(
|
|
185
|
+
parts=[TextPart(content='{"ret_a":"a-apple"}')],
|
|
186
|
+
usage=RequestUsage(input_tokens=52, output_tokens=11),
|
|
187
|
+
model_name='test',
|
|
188
|
+
timestamp=IsDatetime(),
|
|
189
|
+
provider_name='test',
|
|
190
|
+
)
|
|
191
|
+
)
|
|
192
|
+
assert result.all_messages() == snapshot(
|
|
193
|
+
[
|
|
194
|
+
ModelRequest(parts=[UserPromptPart(content='Hello', timestamp=IsNow(tz=timezone.utc))]),
|
|
195
|
+
ModelResponse(
|
|
196
|
+
parts=[ToolCallPart(tool_name='ret_a', args={'x': 'a'}, tool_call_id=IsStr())],
|
|
197
|
+
usage=RequestUsage(input_tokens=51),
|
|
198
|
+
model_name='test',
|
|
199
|
+
timestamp=IsNow(tz=timezone.utc),
|
|
200
|
+
provider_name='test',
|
|
201
|
+
),
|
|
202
|
+
ModelRequest(
|
|
203
|
+
parts=[
|
|
204
|
+
ToolReturnPart(
|
|
205
|
+
tool_name='ret_a', content='a-apple', timestamp=IsNow(tz=timezone.utc), tool_call_id=IsStr()
|
|
206
|
+
)
|
|
207
|
+
]
|
|
208
|
+
),
|
|
209
|
+
ModelResponse(
|
|
210
|
+
parts=[TextPart(content='{"ret_a":"a-apple"}')],
|
|
211
|
+
usage=RequestUsage(input_tokens=52, output_tokens=11),
|
|
212
|
+
model_name='test',
|
|
213
|
+
timestamp=IsNow(tz=timezone.utc),
|
|
214
|
+
provider_name='test',
|
|
215
|
+
),
|
|
216
|
+
]
|
|
217
|
+
)
|
|
218
|
+
assert result.usage() == snapshot(
|
|
219
|
+
RunUsage(
|
|
220
|
+
requests=2,
|
|
221
|
+
input_tokens=103,
|
|
222
|
+
output_tokens=11,
|
|
223
|
+
tool_calls=1,
|
|
224
|
+
)
|
|
225
|
+
)
|
|
226
|
+
|
|
227
|
+
|
|
138
228
|
async def test_streamed_structured_response():
|
|
139
229
|
m = TestModel()
|
|
140
230
|
|
|
@@ -302,6 +392,119 @@ async def test_streamed_text_stream():
|
|
|
302
392
|
)
|
|
303
393
|
|
|
304
394
|
|
|
395
|
+
def test_streamed_text_stream_sync():
|
|
396
|
+
m = TestModel(custom_output_text='The cat sat on the mat.')
|
|
397
|
+
|
|
398
|
+
agent = Agent(m)
|
|
399
|
+
|
|
400
|
+
result = agent.run_stream_sync('Hello')
|
|
401
|
+
# typehint to test (via static typing) that the stream type is correctly inferred
|
|
402
|
+
chunks: list[str] = [c for c in result.stream_text()]
|
|
403
|
+
# one chunk with `stream_text()` due to group_by_temporal
|
|
404
|
+
assert chunks == snapshot(['The cat sat on the mat.'])
|
|
405
|
+
assert result.is_complete
|
|
406
|
+
|
|
407
|
+
result = agent.run_stream_sync('Hello')
|
|
408
|
+
# typehint to test (via static typing) that the stream type is correctly inferred
|
|
409
|
+
chunks: list[str] = [c for c in result.stream_output()]
|
|
410
|
+
# two chunks with `stream()` due to not-final vs. final
|
|
411
|
+
assert chunks == snapshot(['The cat sat on the mat.'])
|
|
412
|
+
assert result.is_complete
|
|
413
|
+
|
|
414
|
+
result = agent.run_stream_sync('Hello')
|
|
415
|
+
assert [c for c in result.stream_text(debounce_by=None)] == snapshot(
|
|
416
|
+
[
|
|
417
|
+
'The ',
|
|
418
|
+
'The cat ',
|
|
419
|
+
'The cat sat ',
|
|
420
|
+
'The cat sat on ',
|
|
421
|
+
'The cat sat on the ',
|
|
422
|
+
'The cat sat on the mat.',
|
|
423
|
+
]
|
|
424
|
+
)
|
|
425
|
+
|
|
426
|
+
result = agent.run_stream_sync('Hello')
|
|
427
|
+
# with stream_text, there is no need to do partial validation, so we only get the final message once:
|
|
428
|
+
assert [c for c in result.stream_text(delta=False, debounce_by=None)] == snapshot(
|
|
429
|
+
['The ', 'The cat ', 'The cat sat ', 'The cat sat on ', 'The cat sat on the ', 'The cat sat on the mat.']
|
|
430
|
+
)
|
|
431
|
+
|
|
432
|
+
result = agent.run_stream_sync('Hello')
|
|
433
|
+
assert [c for c in result.stream_text(delta=True, debounce_by=None)] == snapshot(
|
|
434
|
+
['The ', 'cat ', 'sat ', 'on ', 'the ', 'mat.']
|
|
435
|
+
)
|
|
436
|
+
|
|
437
|
+
def upcase(text: str) -> str:
|
|
438
|
+
return text.upper()
|
|
439
|
+
|
|
440
|
+
result = agent.run_stream_sync('Hello', output_type=TextOutput(upcase))
|
|
441
|
+
assert [c for c in result.stream_output(debounce_by=None)] == snapshot(
|
|
442
|
+
['THE ', 'THE CAT ', 'THE CAT SAT ', 'THE CAT SAT ON ', 'THE CAT SAT ON THE ', 'THE CAT SAT ON THE MAT.']
|
|
443
|
+
)
|
|
444
|
+
|
|
445
|
+
result = agent.run_stream_sync('Hello')
|
|
446
|
+
assert [c for c, _is_last in result.stream_responses(debounce_by=None)] == snapshot(
|
|
447
|
+
[
|
|
448
|
+
ModelResponse(
|
|
449
|
+
parts=[TextPart(content='The ')],
|
|
450
|
+
usage=RequestUsage(input_tokens=51, output_tokens=1),
|
|
451
|
+
model_name='test',
|
|
452
|
+
timestamp=IsNow(tz=timezone.utc),
|
|
453
|
+
provider_name='test',
|
|
454
|
+
),
|
|
455
|
+
ModelResponse(
|
|
456
|
+
parts=[TextPart(content='The cat ')],
|
|
457
|
+
usage=RequestUsage(input_tokens=51, output_tokens=2),
|
|
458
|
+
model_name='test',
|
|
459
|
+
timestamp=IsNow(tz=timezone.utc),
|
|
460
|
+
provider_name='test',
|
|
461
|
+
),
|
|
462
|
+
ModelResponse(
|
|
463
|
+
parts=[TextPart(content='The cat sat ')],
|
|
464
|
+
usage=RequestUsage(input_tokens=51, output_tokens=3),
|
|
465
|
+
model_name='test',
|
|
466
|
+
timestamp=IsNow(tz=timezone.utc),
|
|
467
|
+
provider_name='test',
|
|
468
|
+
),
|
|
469
|
+
ModelResponse(
|
|
470
|
+
parts=[TextPart(content='The cat sat on ')],
|
|
471
|
+
usage=RequestUsage(input_tokens=51, output_tokens=4),
|
|
472
|
+
model_name='test',
|
|
473
|
+
timestamp=IsNow(tz=timezone.utc),
|
|
474
|
+
provider_name='test',
|
|
475
|
+
),
|
|
476
|
+
ModelResponse(
|
|
477
|
+
parts=[TextPart(content='The cat sat on the ')],
|
|
478
|
+
usage=RequestUsage(input_tokens=51, output_tokens=5),
|
|
479
|
+
model_name='test',
|
|
480
|
+
timestamp=IsNow(tz=timezone.utc),
|
|
481
|
+
provider_name='test',
|
|
482
|
+
),
|
|
483
|
+
ModelResponse(
|
|
484
|
+
parts=[TextPart(content='The cat sat on the mat.')],
|
|
485
|
+
usage=RequestUsage(input_tokens=51, output_tokens=7),
|
|
486
|
+
model_name='test',
|
|
487
|
+
timestamp=IsNow(tz=timezone.utc),
|
|
488
|
+
provider_name='test',
|
|
489
|
+
),
|
|
490
|
+
ModelResponse(
|
|
491
|
+
parts=[TextPart(content='The cat sat on the mat.')],
|
|
492
|
+
usage=RequestUsage(input_tokens=51, output_tokens=7),
|
|
493
|
+
model_name='test',
|
|
494
|
+
timestamp=IsNow(tz=timezone.utc),
|
|
495
|
+
provider_name='test',
|
|
496
|
+
),
|
|
497
|
+
ModelResponse(
|
|
498
|
+
parts=[TextPart(content='The cat sat on the mat.')],
|
|
499
|
+
usage=RequestUsage(input_tokens=51, output_tokens=7),
|
|
500
|
+
model_name='test',
|
|
501
|
+
timestamp=IsDatetime(),
|
|
502
|
+
provider_name='test',
|
|
503
|
+
),
|
|
504
|
+
]
|
|
505
|
+
)
|
|
506
|
+
|
|
507
|
+
|
|
305
508
|
async def test_plain_response():
|
|
306
509
|
call_index = 0
|
|
307
510
|
|
|
@@ -1892,3 +2095,24 @@ async def test_run_stream_events():
|
|
|
1892
2095
|
AgentRunResultEvent(result=AgentRunResult(output='{"ret_a":"a-apple"}')),
|
|
1893
2096
|
]
|
|
1894
2097
|
)
|
|
2098
|
+
|
|
2099
|
+
|
|
2100
|
+
def test_structured_response_sync_validation():
|
|
2101
|
+
async def text_stream(_messages: list[ModelMessage], agent_info: AgentInfo) -> AsyncIterator[DeltaToolCalls]:
|
|
2102
|
+
assert agent_info.output_tools is not None
|
|
2103
|
+
assert len(agent_info.output_tools) == 1
|
|
2104
|
+
name = agent_info.output_tools[0].name
|
|
2105
|
+
json_data = json.dumps({'response': [1, 2, 3, 4]})
|
|
2106
|
+
yield {0: DeltaToolCall(name=name)}
|
|
2107
|
+
yield {0: DeltaToolCall(json_args=json_data[:15])}
|
|
2108
|
+
yield {0: DeltaToolCall(json_args=json_data[15:])}
|
|
2109
|
+
|
|
2110
|
+
agent = Agent(FunctionModel(stream_function=text_stream), output_type=list[int])
|
|
2111
|
+
|
|
2112
|
+
chunks: list[list[int]] = []
|
|
2113
|
+
result = agent.run_stream_sync('')
|
|
2114
|
+
for structured_response, last in result.stream_responses(debounce_by=None):
|
|
2115
|
+
response_data = result.validate_response_output(structured_response, allow_partial=not last)
|
|
2116
|
+
chunks.append(response_data)
|
|
2117
|
+
|
|
2118
|
+
assert chunks == snapshot([[1], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]])
|
|
@@ -260,7 +260,7 @@ else:
|
|
|
260
260
|
Tool(foobar_ctx, takes_ctx=True)
|
|
261
261
|
Tool(foobar_ctx)
|
|
262
262
|
Tool(foobar_plain, takes_ctx=False)
|
|
263
|
-
assert_type(Tool(foobar_plain), Tool[
|
|
263
|
+
assert_type(Tool(foobar_plain), Tool[object])
|
|
264
264
|
assert_type(Tool(foobar_plain), Tool)
|
|
265
265
|
|
|
266
266
|
# unfortunately we can't type check these cases, since from a typing perspect `foobar_ctx` is valid as a plain tool
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
from typing import Any
|
|
3
|
+
|
|
4
|
+
from typing_extensions import assert_type
|
|
5
|
+
|
|
6
|
+
from pydantic_ai import Agent, RunContext, Tool, ToolDefinition
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@dataclass
|
|
10
|
+
class DepsA:
|
|
11
|
+
a: int
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@dataclass
|
|
15
|
+
class DepsB:
|
|
16
|
+
b: str
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@dataclass
|
|
20
|
+
class AgentDeps(DepsA, DepsB):
|
|
21
|
+
pass
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
agent = Agent(
|
|
25
|
+
instructions='...',
|
|
26
|
+
model='...',
|
|
27
|
+
deps_type=AgentDeps,
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
@agent.tool
|
|
32
|
+
def tool_func_1(ctx: RunContext[DepsA]) -> int:
|
|
33
|
+
return ctx.deps.a
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
@agent.tool
|
|
37
|
+
def tool_func_2(ctx: RunContext[DepsB]) -> str:
|
|
38
|
+
return ctx.deps.b
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
# Ensure that you can use tools with deps that are supertypes of the agent's deps
|
|
42
|
+
agent.run_sync('...', deps=AgentDeps(a=0, b='test'))
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def my_plain_tool() -> str:
|
|
46
|
+
return 'abc'
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def my_context_tool(ctx: RunContext[int]) -> str:
|
|
50
|
+
return str(ctx.deps)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
async def my_prepare_none(ctx: RunContext, tool_defn: ToolDefinition) -> None:
|
|
54
|
+
pass
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
async def my_prepare_object(ctx: RunContext[object], tool_defn: ToolDefinition) -> None:
|
|
58
|
+
pass
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
async def my_prepare_any(ctx: RunContext[Any], tool_defn: ToolDefinition) -> None:
|
|
62
|
+
pass
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
tool_1 = Tool(my_plain_tool)
|
|
66
|
+
assert_type(tool_1, Tool[object])
|
|
67
|
+
|
|
68
|
+
tool_2 = Tool(my_plain_tool, prepare=my_prepare_none)
|
|
69
|
+
assert_type(tool_2, Tool[None]) # due to default parameter of RunContext being None and inferring from prepare
|
|
70
|
+
|
|
71
|
+
tool_3 = Tool(my_plain_tool, prepare=my_prepare_object)
|
|
72
|
+
assert_type(tool_3, Tool[object])
|
|
73
|
+
|
|
74
|
+
tool_4 = Tool(my_plain_tool, prepare=my_prepare_any)
|
|
75
|
+
assert_type(tool_4, Tool[Any])
|
|
76
|
+
|
|
77
|
+
tool_5 = Tool(my_context_tool)
|
|
78
|
+
assert_type(tool_5, Tool[int])
|
|
79
|
+
|
|
80
|
+
tool_6 = Tool(my_context_tool, prepare=my_prepare_object)
|
|
81
|
+
assert_type(tool_6, Tool[int])
|
|
82
|
+
|
|
83
|
+
# Note: The following is not ideal behavior, but the workaround is to just not use Any as the argument to your prepare
|
|
84
|
+
# function, as shown in the example immediately above
|
|
85
|
+
tool_7 = Tool(my_context_tool, prepare=my_prepare_any)
|
|
86
|
+
assert_type(tool_7, Tool[Any])
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_complex_agent_run.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_agent_iter.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|