pydantic-ai 0.4.7__tar.gz → 0.4.8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pydantic-ai might be problematic. Click here for more details.
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/PKG-INFO +3 -3
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/pyproject.toml +1 -1
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/test_instrumented.py +44 -20
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/test_mcp.py +14 -0
- pydantic_ai-0.4.8/tests/test_tenacity.py +572 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/test_toolsets.py +25 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/.gitignore +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/LICENSE +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/Makefile +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/README.md +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/__init__.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/assets/dummy.pdf +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/assets/kiwi.png +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/assets/marcelo.mp3 +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/assets/product_name.txt +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/assets/small_video.mp4 +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/cassettes/test_mcp/test_agent_with_server_not_running.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/cassettes/test_mcp/test_agent_with_stdio_server.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/cassettes/test_mcp/test_tool_returning_audio_resource.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/cassettes/test_mcp/test_tool_returning_audio_resource_link.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/cassettes/test_mcp/test_tool_returning_dict.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/cassettes/test_mcp/test_tool_returning_error.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/cassettes/test_mcp/test_tool_returning_image.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/cassettes/test_mcp/test_tool_returning_image_resource.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/cassettes/test_mcp/test_tool_returning_image_resource_link.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/cassettes/test_mcp/test_tool_returning_multiple_items.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/cassettes/test_mcp/test_tool_returning_none.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/cassettes/test_mcp/test_tool_returning_str.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/cassettes/test_mcp/test_tool_returning_text_resource.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/cassettes/test_mcp/test_tool_returning_text_resource_link.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/cassettes/test_settings/test_stop_settings[anthropic].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/cassettes/test_settings/test_stop_settings[bedrock].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/cassettes/test_settings/test_stop_settings[cohere].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/cassettes/test_settings/test_stop_settings[gemini].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/cassettes/test_settings/test_stop_settings[google].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/cassettes/test_settings/test_stop_settings[groq].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/cassettes/test_settings/test_stop_settings[mistral].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/cassettes/test_settings/test_stop_settings[openai].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/conftest.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/evals/__init__.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/evals/test_dataset.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/evals/test_evaluator_base.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/evals/test_evaluator_common.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/evals/test_evaluator_context.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/evals/test_evaluator_spec.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/evals/test_evaluators.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/evals/test_llm_as_a_judge.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/evals/test_otel.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/evals/test_render_numbers.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/evals/test_reporting.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/evals/test_reports.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/evals/test_utils.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/evals/utils.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/example_modules/README.md +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/example_modules/bank_database.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/example_modules/fake_database.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/example_modules/mcp_server.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/example_modules/weather_service.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/ext/__init__.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/ext/test_langchain.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/graph/__init__.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/graph/test_file_persistence.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/graph/test_graph.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/graph/test_mermaid.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/graph/test_persistence.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/graph/test_state.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/graph/test_utils.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/import_examples.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/json_body_serializer.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/mcp_server.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/__init__.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_anthropic/test_anthropic_model_empty_message_on_history.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_anthropic/test_anthropic_model_instructions.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_stream.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output_multiple.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_anthropic/test_anthropic_text_output_function.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_anthropic/test_anthropic_tool_output.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_anthropic/test_anthropic_tool_with_thinking.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_anthropic/test_document_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_anthropic/test_document_url_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_anthropic/test_extra_headers.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_anthropic/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_anthropic/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_anthropic/test_image_url_input_invalid_mime_type.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_anthropic/test_multiple_parallel_tool_calls.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_anthropic/test_text_document_url_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_bedrock/test_bedrock_empty_system_prompt.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_bedrock/test_bedrock_model.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_bedrock/test_bedrock_model_anthropic_model_without_tools.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_bedrock/test_bedrock_model_guardrail_config.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_bedrock/test_bedrock_model_instructions.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_bedrock/test_bedrock_model_iter_stream.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_bedrock/test_bedrock_model_max_tokens.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_bedrock/test_bedrock_model_other_parameters.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_bedrock/test_bedrock_model_performance_config.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_bedrock/test_bedrock_model_retry.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_bedrock/test_bedrock_model_stream.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_bedrock/test_bedrock_model_structured_output.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_stream.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_bedrock/test_bedrock_model_top_p.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_bedrock/test_bedrock_multiple_documents_in_history.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_bedrock/test_document_url_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_bedrock/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_bedrock/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_bedrock/test_text_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_bedrock/test_text_document_url_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_bedrock/test_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_bedrock/test_video_url_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_cohere/test_cohere_model_instructions.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_cohere/test_cohere_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_cohere/test_request_simple_success_with_vcr.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_stream.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_download_item/test_download_item_application_octet_stream.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_download_item/test_download_item_audio_mpeg.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_download_item/test_download_item_no_content_type.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini/test_document_url_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_false.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_true.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini/test_gemini_drop_exclusive_maximum.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini/test_gemini_exclusive_minimum_and_maximum.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini/test_gemini_model_instructions.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini/test_gemini_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini/test_gemini_native_output.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini/test_gemini_native_output_multiple.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini/test_gemini_prompted_output.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_multiple.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_with_tools.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini/test_gemini_text_output_function.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini/test_gemini_tool_config_any_with_tool_without_args.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini/test_gemini_tool_output.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini/test_gemini_youtube_video_url_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini/test_labels_are_ignored_with_gla_provider.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini/test_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini/test_video_url_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini_vertex/test_labels.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl (gs)].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl (gs)].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl (gs)].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (YouTube)].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (gs)].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_gemini_vertex/test_url_input_force_download.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_model.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_model_document_url_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_model_empty_assistant_response.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_model_empty_user_prompt.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_model_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_model_image_url_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_model_instructions.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_model_iter_stream.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_model_max_tokens.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_model_multiple_documents_in_history.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_model_retry.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_model_safety_settings.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_model_stream.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_model_structured_output.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_model_text_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_model_text_document_url_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_model_thinking_config.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_model_thinking_part_iter.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_model_top_p.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_model_vertex_labels.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_model_vertex_provider.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input_with_vendor_metadata.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_model_video_url_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_model_youtube_video_url_input_with_vendor_metadata.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_native_output.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_native_output_multiple.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_prompted_output.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_prompted_output_multiple.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_prompted_output_with_tools.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_text_output_function.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_timeout.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_tool_config_any_with_tool_without_args.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_tool_output.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl (gs)].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl (gs)].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl (gs)].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (YouTube)].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (gs)].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_google/test_google_url_input_force_download.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_groq/test_extra_headers.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_groq/test_groq_model_instructions.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_groq/test_groq_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_groq/test_groq_model_thinking_part_iter.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_groq/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_groq/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_groq/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_huggingface/test_hf_model_instructions.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_huggingface/test_hf_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_huggingface/test_hf_model_thinking_part_iter.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_huggingface/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_huggingface/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[Qwen-Qwen2.5-72B-Instruct].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[deepseek-ai-DeepSeek-R1-0528].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[meta-llama-Llama-3.3-70B-Instruct].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_huggingface/test_request_simple_success_with_vcr.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_huggingface/test_request_simple_usage.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_huggingface/test_simple_completion.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_huggingface/test_stream_completion.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_mistral/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_mistral/test_mistral_model_instructions.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_model_names/test_known_model_names.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_audio_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_compatible_api_with_tool_calls_without_id.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_document_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_document_url_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_extra_headers.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_image_url_tool_response.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_invalid_response.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4.5-preview].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4o-mini].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_max_completion_tokens[o3-mini].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_multiple_agent_tool_calls.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_openai_audio_url_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_openai_instructions.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_openai_instructions_with_tool_calls_keep_instructions.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_openai_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_openai_model_thinking_part_iter.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_openai_model_without_system_prompt.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_openai_native_output.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_openai_native_output_multiple.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[developer].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[system].yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_openai_prompted_output.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_openai_prompted_output_multiple.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_openai_responses_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_openai_text_output_function.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_openai_tool_output.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_reasoning_model_with_temperature.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_text_response.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_user_id.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai/test_valid_response.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai_responses/test_audio_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai_responses/test_native_output.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai_responses/test_native_output_multiple.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_url_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_url_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_http_error.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_instructions.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_retry.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response_with_tool_call.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai_responses/test_openai_responses_output_type.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_effort.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_generate_summary.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai_responses/test_openai_responses_stream.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai_responses/test_openai_responses_system_prompt.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai_responses/test_openai_responses_text_document_url_input.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai_responses/test_prompted_output.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai_responses/test_prompted_output_multiple.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai_responses/test_reasoning_model_with_temperature.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai_responses/test_text_output_function.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/cassettes/test_openai_responses/test_tool_output.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/mock_async_stream.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/test_anthropic.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/test_bedrock.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/test_cohere.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/test_deepseek.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/test_download_item.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/test_fallback.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/test_gemini.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/test_gemini_vertex.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/test_google.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/test_groq.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/test_huggingface.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/test_mcp_sampling.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/test_mistral.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/test_model.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/test_model_function.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/test_model_names.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/test_model_request_parameters.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/test_model_settings.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/test_model_test.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/test_openai.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/models/test_openai_responses.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/providers/__init__.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/providers/cassettes/test_azure/test_azure_provider_call.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/providers/cassettes/test_google_vertex/test_vertexai_provider.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/providers/cassettes/test_heroku/test_heroku_model_provider_claude_3_7_sonnet.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/providers/cassettes/test_openrouter/test_openrouter_with_google_model.yaml +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/providers/test_anthropic.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/providers/test_azure.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/providers/test_bedrock.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/providers/test_cohere.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/providers/test_deepseek.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/providers/test_fireworks.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/providers/test_github.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/providers/test_google_gla.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/providers/test_google_vertex.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/providers/test_grok.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/providers/test_groq.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/providers/test_heroku.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/providers/test_huggingface.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/providers/test_mistral.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/providers/test_moonshotai.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/providers/test_openai.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/providers/test_openrouter.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/providers/test_provider_names.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/providers/test_together.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/providers/test_vercel.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/test_a2a.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/test_ag_ui.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/test_agent.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/test_cli.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/test_deps.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/test_direct.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/test_examples.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/test_format_as_xml.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/test_history_processor.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/test_json_body_serializer.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/test_live.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/test_logfire.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/test_messages.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/test_parts_manager.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/test_settings.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/test_streaming.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/test_thinking_part.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/test_tools.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/test_usage_limits.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/test_utils.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/typed_agent.py +0 -0
- {pydantic_ai-0.4.7 → pydantic_ai-0.4.8}/tests/typed_graph.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pydantic-ai
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.8
|
|
4
4
|
Summary: Agent Framework / shim to use Pydantic with LLMs
|
|
5
5
|
Project-URL: Homepage, https://ai.pydantic.dev
|
|
6
6
|
Project-URL: Source, https://github.com/pydantic/pydantic-ai
|
|
@@ -28,11 +28,11 @@ Classifier: Topic :: Internet
|
|
|
28
28
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
29
29
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
30
30
|
Requires-Python: >=3.9
|
|
31
|
-
Requires-Dist: pydantic-ai-slim[ag-ui,anthropic,bedrock,cli,cohere,evals,google,groq,huggingface,mcp,mistral,openai,vertexai]==0.4.
|
|
31
|
+
Requires-Dist: pydantic-ai-slim[ag-ui,anthropic,bedrock,cli,cohere,evals,google,groq,huggingface,mcp,mistral,openai,retries,vertexai]==0.4.8
|
|
32
32
|
Provides-Extra: a2a
|
|
33
33
|
Requires-Dist: fasta2a>=0.4.1; extra == 'a2a'
|
|
34
34
|
Provides-Extra: examples
|
|
35
|
-
Requires-Dist: pydantic-ai-examples==0.4.
|
|
35
|
+
Requires-Dist: pydantic-ai-examples==0.4.8; extra == 'examples'
|
|
36
36
|
Provides-Extra: logfire
|
|
37
37
|
Requires-Dist: logfire>=3.11.0; extra == 'logfire'
|
|
38
38
|
Description-Content-Type: text/markdown
|
|
@@ -47,7 +47,7 @@ requires-python = ">=3.9"
|
|
|
47
47
|
|
|
48
48
|
[tool.hatch.metadata.hooks.uv-dynamic-versioning]
|
|
49
49
|
dependencies = [
|
|
50
|
-
"pydantic-ai-slim[openai,vertexai,google,groq,anthropic,mistral,cohere,bedrock,huggingface,cli,mcp,evals,ag-ui]=={{ version }}",
|
|
50
|
+
"pydantic-ai-slim[openai,vertexai,google,groq,anthropic,mistral,cohere,bedrock,huggingface,cli,mcp,evals,ag-ui,retries]=={{ version }}",
|
|
51
51
|
]
|
|
52
52
|
|
|
53
53
|
[tool.hatch.metadata.hooks.uv-dynamic-versioning.optional-dependencies]
|
|
@@ -26,6 +26,7 @@ from pydantic_ai.messages import (
|
|
|
26
26
|
SystemPromptPart,
|
|
27
27
|
TextPart,
|
|
28
28
|
TextPartDelta,
|
|
29
|
+
ThinkingPart,
|
|
29
30
|
ToolCallPart,
|
|
30
31
|
ToolReturnPart,
|
|
31
32
|
UserPromptPart,
|
|
@@ -150,7 +151,7 @@ async def test_instrumented_model(capfire: CaptureLogfire):
|
|
|
150
151
|
'context': {'trace_id': 1, 'span_id': 1, 'is_remote': False},
|
|
151
152
|
'parent': None,
|
|
152
153
|
'start_time': 1000000000,
|
|
153
|
-
'end_time':
|
|
154
|
+
'end_time': 16000000000,
|
|
154
155
|
'attributes': {
|
|
155
156
|
'gen_ai.operation.name': 'chat',
|
|
156
157
|
'gen_ai.system': 'my_system',
|
|
@@ -284,7 +285,7 @@ Fix the errors and try again.\
|
|
|
284
285
|
'index': 0,
|
|
285
286
|
'message': {
|
|
286
287
|
'role': 'assistant',
|
|
287
|
-
'content': 'text1',
|
|
288
|
+
'content': [{'kind': 'text', 'text': 'text1'}, {'kind': 'text', 'text': 'text2'}],
|
|
288
289
|
'tool_calls': [
|
|
289
290
|
{
|
|
290
291
|
'id': 'tool_call_1',
|
|
@@ -308,17 +309,6 @@ Fix the errors and try again.\
|
|
|
308
309
|
'span_id': 1,
|
|
309
310
|
'trace_flags': 1,
|
|
310
311
|
},
|
|
311
|
-
{
|
|
312
|
-
'body': {'index': 0, 'message': {'role': 'assistant', 'content': 'text2'}},
|
|
313
|
-
'severity_number': 9,
|
|
314
|
-
'severity_text': None,
|
|
315
|
-
'attributes': {'gen_ai.system': 'my_system', 'event.name': 'gen_ai.choice'},
|
|
316
|
-
'timestamp': 16000000000,
|
|
317
|
-
'observed_timestamp': 17000000000,
|
|
318
|
-
'trace_id': 1,
|
|
319
|
-
'span_id': 1,
|
|
320
|
-
'trace_flags': 1,
|
|
321
|
-
},
|
|
322
312
|
]
|
|
323
313
|
)
|
|
324
314
|
|
|
@@ -641,11 +631,13 @@ Fix the errors and try again.\
|
|
|
641
631
|
'gen_ai.system': 'my_system',
|
|
642
632
|
},
|
|
643
633
|
{
|
|
644
|
-
'event.name': 'gen_ai.choice',
|
|
645
634
|
'index': 0,
|
|
646
635
|
'message': {
|
|
647
636
|
'role': 'assistant',
|
|
648
|
-
'content':
|
|
637
|
+
'content': [
|
|
638
|
+
{'kind': 'text', 'text': 'text1'},
|
|
639
|
+
{'kind': 'text', 'text': 'text2'},
|
|
640
|
+
],
|
|
649
641
|
'tool_calls': [
|
|
650
642
|
{
|
|
651
643
|
'id': 'tool_call_1',
|
|
@@ -660,12 +652,7 @@ Fix the errors and try again.\
|
|
|
660
652
|
],
|
|
661
653
|
},
|
|
662
654
|
'gen_ai.system': 'my_system',
|
|
663
|
-
},
|
|
664
|
-
{
|
|
665
655
|
'event.name': 'gen_ai.choice',
|
|
666
|
-
'index': 0,
|
|
667
|
-
'message': {'role': 'assistant', 'content': 'text2'},
|
|
668
|
-
'gen_ai.system': 'my_system',
|
|
669
656
|
},
|
|
670
657
|
]
|
|
671
658
|
)
|
|
@@ -879,6 +866,7 @@ def test_messages_without_content(document_content: BinaryContent):
|
|
|
879
866
|
},
|
|
880
867
|
{
|
|
881
868
|
'role': 'assistant',
|
|
869
|
+
'content': [{'kind': 'text'}],
|
|
882
870
|
'gen_ai.message.index': 1,
|
|
883
871
|
'event.name': 'gen_ai.assistant.message',
|
|
884
872
|
},
|
|
@@ -897,6 +885,7 @@ def test_messages_without_content(document_content: BinaryContent):
|
|
|
897
885
|
},
|
|
898
886
|
{
|
|
899
887
|
'role': 'assistant',
|
|
888
|
+
'content': [{'kind': 'text'}],
|
|
900
889
|
'tool_calls': [
|
|
901
890
|
{
|
|
902
891
|
'id': IsStr(),
|
|
@@ -935,3 +924,38 @@ def test_messages_without_content(document_content: BinaryContent):
|
|
|
935
924
|
},
|
|
936
925
|
]
|
|
937
926
|
)
|
|
927
|
+
|
|
928
|
+
|
|
929
|
+
def test_message_with_thinking_parts():
|
|
930
|
+
messages: list[ModelMessage] = [
|
|
931
|
+
ModelResponse(parts=[TextPart('text1'), ThinkingPart('thinking1'), TextPart('text2')]),
|
|
932
|
+
ModelResponse(parts=[ThinkingPart('thinking2')]),
|
|
933
|
+
ModelResponse(parts=[ThinkingPart('thinking3'), TextPart('text3')]),
|
|
934
|
+
]
|
|
935
|
+
settings = InstrumentationSettings()
|
|
936
|
+
assert [InstrumentedModel.event_to_dict(e) for e in settings.messages_to_otel_events(messages)] == snapshot(
|
|
937
|
+
[
|
|
938
|
+
{
|
|
939
|
+
'role': 'assistant',
|
|
940
|
+
'content': [
|
|
941
|
+
{'kind': 'text', 'text': 'text1'},
|
|
942
|
+
{'kind': 'thinking', 'text': 'thinking1'},
|
|
943
|
+
{'kind': 'text', 'text': 'text2'},
|
|
944
|
+
],
|
|
945
|
+
'gen_ai.message.index': 0,
|
|
946
|
+
'event.name': 'gen_ai.assistant.message',
|
|
947
|
+
},
|
|
948
|
+
{
|
|
949
|
+
'role': 'assistant',
|
|
950
|
+
'content': [{'kind': 'thinking', 'text': 'thinking2'}],
|
|
951
|
+
'gen_ai.message.index': 1,
|
|
952
|
+
'event.name': 'gen_ai.assistant.message',
|
|
953
|
+
},
|
|
954
|
+
{
|
|
955
|
+
'role': 'assistant',
|
|
956
|
+
'content': [{'kind': 'thinking', 'text': 'thinking3'}, {'kind': 'text', 'text': 'text3'}],
|
|
957
|
+
'gen_ai.message.index': 2,
|
|
958
|
+
'event.name': 'gen_ai.assistant.message',
|
|
959
|
+
},
|
|
960
|
+
]
|
|
961
|
+
)
|
|
@@ -91,6 +91,20 @@ async def test_reentrant_context_manager():
|
|
|
91
91
|
pass
|
|
92
92
|
|
|
93
93
|
|
|
94
|
+
async def test_context_manager_initialization_error() -> None:
|
|
95
|
+
"""Test if streams are closed if client fails to initialize."""
|
|
96
|
+
server = MCPServerStdio('python', ['-m', 'tests.mcp_server'])
|
|
97
|
+
from mcp.client.session import ClientSession
|
|
98
|
+
|
|
99
|
+
with patch.object(ClientSession, 'initialize', side_effect=Exception):
|
|
100
|
+
with pytest.raises(Exception):
|
|
101
|
+
async with server:
|
|
102
|
+
pass
|
|
103
|
+
|
|
104
|
+
assert server._read_stream._closed # pyright: ignore[reportPrivateUsage]
|
|
105
|
+
assert server._write_stream._closed # pyright: ignore[reportPrivateUsage]
|
|
106
|
+
|
|
107
|
+
|
|
94
108
|
async def test_stdio_server_with_tool_prefix(run_context: RunContext[int]):
|
|
95
109
|
server = MCPServerStdio('python', ['-m', 'tests.mcp_server'], tool_prefix='foo')
|
|
96
110
|
async with server:
|