pydantic-ai 0.4.0__tar.gz → 0.4.2__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.0 → pydantic_ai-0.4.2}/PKG-INFO +5 -3
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/pyproject.toml +10 -12
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/evals/test_dataset.py +58 -7
- pydantic_ai-0.4.2/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_stream.yaml +258 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/test_deepseek.py +43 -1
- pydantic_ai-0.4.2/tests/models/test_model_settings.py +164 -0
- pydantic_ai-0.4.2/tests/test_a2a.py +990 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/test_agent.py +72 -1
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/test_examples.py +5 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/test_logfire.py +2 -2
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/typed_agent.py +12 -2
- pydantic_ai-0.4.0/tests/fasta2a/test_applications.py +0 -45
- pydantic_ai-0.4.0/tests/providers/__init__.py +0 -0
- pydantic_ai-0.4.0/tests/test_a2a.py +0 -352
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/.gitignore +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/LICENSE +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/Makefile +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/README.md +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/__init__.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/assets/dummy.pdf +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/assets/kiwi.png +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/assets/marcelo.mp3 +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/assets/small_video.mp4 +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/cassettes/test_mcp/test_agent_with_stdio_server.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/cassettes/test_mcp/test_tool_returning_audio_resource.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/cassettes/test_mcp/test_tool_returning_dict.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/cassettes/test_mcp/test_tool_returning_error.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/cassettes/test_mcp/test_tool_returning_image.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/cassettes/test_mcp/test_tool_returning_image_resource.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/cassettes/test_mcp/test_tool_returning_multiple_items.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/cassettes/test_mcp/test_tool_returning_none.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/cassettes/test_mcp/test_tool_returning_str.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/cassettes/test_mcp/test_tool_returning_text_resource.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/cassettes/test_settings/test_stop_settings[anthropic].yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/cassettes/test_settings/test_stop_settings[bedrock].yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/cassettes/test_settings/test_stop_settings[cohere].yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/cassettes/test_settings/test_stop_settings[gemini].yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/cassettes/test_settings/test_stop_settings[google].yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/cassettes/test_settings/test_stop_settings[groq].yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/cassettes/test_settings/test_stop_settings[mistral].yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/cassettes/test_settings/test_stop_settings[openai].yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/conftest.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/evals/__init__.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/evals/test_evaluator_base.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/evals/test_evaluator_common.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/evals/test_evaluator_context.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/evals/test_evaluator_spec.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/evals/test_evaluators.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/evals/test_llm_as_a_judge.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/evals/test_otel.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/evals/test_render_numbers.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/evals/test_reporting.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/evals/test_reports.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/evals/test_utils.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/evals/utils.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/example_modules/README.md +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/example_modules/bank_database.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/example_modules/fake_database.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/example_modules/mcp_server.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/example_modules/weather_service.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/ext/__init__.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/ext/test_langchain.py +0 -0
- {pydantic_ai-0.4.0/tests/fasta2a → pydantic_ai-0.4.2/tests/graph}/__init__.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/graph/test_file_persistence.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/graph/test_graph.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/graph/test_mermaid.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/graph/test_persistence.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/graph/test_state.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/graph/test_utils.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/import_examples.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/json_body_serializer.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/mcp_server.py +0 -0
- {pydantic_ai-0.4.0/tests/graph → pydantic_ai-0.4.2/tests/models}/__init__.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_anthropic/test_anthropic_model_empty_message_on_history.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_anthropic/test_anthropic_model_instructions.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_stream.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output_multiple.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_anthropic/test_anthropic_text_output_function.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_anthropic/test_anthropic_tool_output.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_anthropic/test_anthropic_tool_with_thinking.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_anthropic/test_document_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_anthropic/test_document_url_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_anthropic/test_extra_headers.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_anthropic/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_anthropic/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_anthropic/test_image_url_input_invalid_mime_type.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_anthropic/test_multiple_parallel_tool_calls.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_anthropic/test_text_document_url_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_bedrock/test_bedrock_empty_system_prompt.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_bedrock/test_bedrock_model.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_bedrock/test_bedrock_model_anthropic_model_without_tools.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_bedrock/test_bedrock_model_guardrail_config.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_bedrock/test_bedrock_model_instructions.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_bedrock/test_bedrock_model_iter_stream.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_bedrock/test_bedrock_model_max_tokens.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_bedrock/test_bedrock_model_other_parameters.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_bedrock/test_bedrock_model_performance_config.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_bedrock/test_bedrock_model_retry.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_bedrock/test_bedrock_model_stream.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_bedrock/test_bedrock_model_structured_output.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_stream.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_bedrock/test_bedrock_model_top_p.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_bedrock/test_bedrock_multiple_documents_in_history.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_bedrock/test_document_url_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_bedrock/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_bedrock/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_bedrock/test_text_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_bedrock/test_text_document_url_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_bedrock/test_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_bedrock/test_video_url_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_cohere/test_cohere_model_instructions.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_cohere/test_cohere_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_cohere/test_request_simple_success_with_vcr.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_download_item/test_download_item_application_octet_stream.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_download_item/test_download_item_no_content_type.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini/test_document_url_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_false.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_true.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini/test_gemini_drop_exclusive_maximum.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini/test_gemini_exclusive_minimum_and_maximum.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini/test_gemini_model_instructions.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini/test_gemini_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini/test_gemini_native_output.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini/test_gemini_native_output_multiple.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini/test_gemini_prompted_output.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_multiple.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_with_tools.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini/test_gemini_text_output_function.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini/test_gemini_tool_config_any_with_tool_without_args.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini/test_gemini_tool_output.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini/test_gemini_youtube_video_url_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini/test_labels_are_ignored_with_gla_provider.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini/test_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini/test_video_url_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini_vertex/test_labels.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl (gs)].yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl].yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl (gs)].yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl].yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl (gs)].yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl].yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (YouTube)].yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (gs)].yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl].yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_gemini_vertex/test_url_input_force_download.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_model.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_model_document_url_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_model_empty_user_prompt.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_model_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_model_image_url_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_model_instructions.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_model_iter_stream.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_model_max_tokens.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_model_multiple_documents_in_history.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_model_retry.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_model_safety_settings.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_model_stream.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_model_structured_output.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_model_text_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_model_text_document_url_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_model_thinking_config.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_model_thinking_part_iter.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_model_top_p.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_model_vertex_labels.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_model_vertex_provider.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input_with_vendor_metadata.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_model_video_url_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_model_youtube_video_url_input_with_vendor_metadata.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_native_output.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_native_output_multiple.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_prompted_output.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_prompted_output_multiple.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_prompted_output_with_tools.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_text_output_function.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_timeout.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_tool_config_any_with_tool_without_args.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_tool_output.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl (gs)].yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl].yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl (gs)].yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl].yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl (gs)].yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl].yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (YouTube)].yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (gs)].yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl].yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_google/test_google_url_input_force_download.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_groq/test_extra_headers.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_groq/test_groq_model_instructions.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_groq/test_groq_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_groq/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_groq/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_groq/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_mistral/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_mistral/test_mistral_model_instructions.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_model_names/test_known_model_names.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai/test_audio_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai/test_compatible_api_with_tool_calls_without_id.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai/test_document_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai/test_document_url_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai/test_extra_headers.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai/test_image_url_tool_response.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4.5-preview].yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4o-mini].yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai/test_max_completion_tokens[o3-mini].yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai/test_multiple_agent_tool_calls.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai/test_openai_audio_url_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai/test_openai_instructions.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai/test_openai_instructions_with_tool_calls_keep_instructions.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai/test_openai_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai/test_openai_model_thinking_part_iter.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai/test_openai_model_without_system_prompt.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai/test_openai_native_output.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai/test_openai_native_output_multiple.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[developer].yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[system].yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai/test_openai_prompted_output.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai/test_openai_prompted_output_multiple.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai/test_openai_responses_model_thinking_part.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai/test_openai_text_output_function.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai/test_openai_tool_output.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai/test_reasoning_model_with_temperature.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai/test_user_id.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai_responses/test_audio_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai_responses/test_native_output.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai_responses/test_native_output_multiple.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_url_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_url_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_http_error.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_instructions.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_retry.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response_with_tool_call.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai_responses/test_openai_responses_output_type.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_effort.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_generate_summary.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai_responses/test_openai_responses_stream.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai_responses/test_openai_responses_system_prompt.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai_responses/test_openai_responses_text_document_url_input.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai_responses/test_prompted_output.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai_responses/test_prompted_output_multiple.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai_responses/test_reasoning_model_with_temperature.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai_responses/test_text_output_function.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/cassettes/test_openai_responses/test_tool_output.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/mock_async_stream.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/test_anthropic.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/test_bedrock.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/test_cohere.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/test_download_item.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/test_fallback.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/test_gemini.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/test_gemini_vertex.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/test_google.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/test_groq.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/test_instrumented.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/test_mcp_sampling.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/test_mistral.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/test_model.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/test_model_function.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/test_model_names.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/test_model_request_parameters.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/test_model_test.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/test_openai.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/models/test_openai_responses.py +0 -0
- {pydantic_ai-0.4.0/tests/models → pydantic_ai-0.4.2/tests/providers}/__init__.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/providers/cassettes/test_azure/test_azure_provider_call.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/providers/cassettes/test_google_vertex/test_vertexai_provider.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/providers/cassettes/test_heroku/test_heroku_model_provider_claude_3_7_sonnet.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/providers/cassettes/test_openrouter/test_openrouter_with_google_model.yaml +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/providers/test_anthropic.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/providers/test_azure.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/providers/test_bedrock.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/providers/test_cohere.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/providers/test_deepseek.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/providers/test_fireworks.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/providers/test_github.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/providers/test_google_gla.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/providers/test_google_vertex.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/providers/test_grok.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/providers/test_groq.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/providers/test_heroku.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/providers/test_mistral.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/providers/test_openai.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/providers/test_openrouter.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/providers/test_provider_names.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/providers/test_together.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/test_cli.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/test_deps.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/test_direct.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/test_format_as_xml.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/test_history_processor.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/test_json_body_serializer.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/test_live.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/test_mcp.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/test_messages.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/test_parts_manager.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/test_settings.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/test_streaming.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/test_thinking_part.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/test_tools.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/test_usage_limits.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/tests/test_utils.py +0 -0
- {pydantic_ai-0.4.0 → pydantic_ai-0.4.2}/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.2
|
|
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,9 +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[
|
|
31
|
+
Requires-Dist: pydantic-ai-slim[anthropic,bedrock,cli,cohere,evals,google,groq,mcp,mistral,openai,vertexai]==0.4.2
|
|
32
|
+
Provides-Extra: a2a
|
|
33
|
+
Requires-Dist: fasta2a>=0.4.1; extra == 'a2a'
|
|
32
34
|
Provides-Extra: examples
|
|
33
|
-
Requires-Dist: pydantic-ai-examples==0.4.
|
|
35
|
+
Requires-Dist: pydantic-ai-examples==0.4.2; extra == 'examples'
|
|
34
36
|
Provides-Extra: logfire
|
|
35
37
|
Requires-Dist: logfire>=3.11.0; extra == 'logfire'
|
|
36
38
|
Description-Content-Type: text/markdown
|
|
@@ -46,12 +46,13 @@ requires-python = ">=3.9"
|
|
|
46
46
|
|
|
47
47
|
[tool.hatch.metadata.hooks.uv-dynamic-versioning]
|
|
48
48
|
dependencies = [
|
|
49
|
-
"pydantic-ai-slim[openai,vertexai,google,groq,anthropic,mistral,cohere,bedrock,cli,mcp,evals
|
|
49
|
+
"pydantic-ai-slim[openai,vertexai,google,groq,anthropic,mistral,cohere,bedrock,cli,mcp,evals]=={{ version }}",
|
|
50
50
|
]
|
|
51
51
|
|
|
52
52
|
[tool.hatch.metadata.hooks.uv-dynamic-versioning.optional-dependencies]
|
|
53
53
|
examples = ["pydantic-ai-examples=={{ version }}"]
|
|
54
54
|
logfire = ["logfire>=3.11.0"]
|
|
55
|
+
a2a = ["fasta2a>=0.4.1"]
|
|
55
56
|
|
|
56
57
|
[project.urls]
|
|
57
58
|
Homepage = "https://ai.pydantic.dev"
|
|
@@ -67,7 +68,6 @@ pydantic-ai-slim = { workspace = true }
|
|
|
67
68
|
pydantic-evals = { workspace = true }
|
|
68
69
|
pydantic-graph = { workspace = true }
|
|
69
70
|
pydantic-ai-examples = { workspace = true }
|
|
70
|
-
fasta2a = { workspace = true }
|
|
71
71
|
|
|
72
72
|
[tool.uv.workspace]
|
|
73
73
|
members = [
|
|
@@ -77,13 +77,13 @@ members = [
|
|
|
77
77
|
"mcp-run-python",
|
|
78
78
|
"clai",
|
|
79
79
|
"examples",
|
|
80
|
-
"fasta2a",
|
|
81
80
|
]
|
|
82
81
|
|
|
83
82
|
[dependency-groups]
|
|
84
83
|
# dev dependencies are defined in `pydantic-ai-slim/pyproject.toml` to allow for minimal testing
|
|
85
84
|
lint = ["mypy>=1.11.2", "pyright>=1.1.390", "ruff>=0.6.9"]
|
|
86
85
|
docs = [
|
|
86
|
+
"pydantic-ai[a2a]",
|
|
87
87
|
"black>=24.10.0",
|
|
88
88
|
"mkdocs>=1.6.1",
|
|
89
89
|
"mkdocs-glightbox>=0.4.0",
|
|
@@ -107,7 +107,6 @@ include = [
|
|
|
107
107
|
"pydantic_evals/**/*.py",
|
|
108
108
|
"pydantic_graph/**/*.py",
|
|
109
109
|
"mcp-run-python/**/*.py",
|
|
110
|
-
"fasta2a/**/*.py",
|
|
111
110
|
"examples/**/*.py",
|
|
112
111
|
"clai/**/*.py",
|
|
113
112
|
"tests/**/*.py",
|
|
@@ -126,7 +125,6 @@ extend-select = [
|
|
|
126
125
|
"TID251",
|
|
127
126
|
]
|
|
128
127
|
flake8-quotes = { inline-quotes = "single", multiline-quotes = "double" }
|
|
129
|
-
isort = { combine-as-imports = true, known-first-party = ["pydantic_ai"] }
|
|
130
128
|
mccabe = { max-complexity = 15 }
|
|
131
129
|
ignore = [
|
|
132
130
|
"D100", # ignore missing docstring in module
|
|
@@ -136,6 +134,12 @@ ignore = [
|
|
|
136
134
|
"D107", # ignore missing docstring in __init__ methods
|
|
137
135
|
]
|
|
138
136
|
|
|
137
|
+
[tool.ruff.lint.isort]
|
|
138
|
+
combine-as-imports = true
|
|
139
|
+
known-first-party = ["pydantic_ai"]
|
|
140
|
+
# weird issue with ruff thinking fasta2a is still editable
|
|
141
|
+
known-third-party = ["fasta2a"]
|
|
142
|
+
|
|
139
143
|
[tool.ruff.lint.pydocstyle]
|
|
140
144
|
convention = "google"
|
|
141
145
|
|
|
@@ -165,7 +169,6 @@ include = [
|
|
|
165
169
|
"pydantic_evals",
|
|
166
170
|
"pydantic_graph",
|
|
167
171
|
"mcp-run-python",
|
|
168
|
-
"fasta2a",
|
|
169
172
|
"tests",
|
|
170
173
|
"examples",
|
|
171
174
|
"clai",
|
|
@@ -189,10 +192,7 @@ files = "tests/typed_agent.py,tests/typed_graph.py"
|
|
|
189
192
|
strict = true
|
|
190
193
|
|
|
191
194
|
[tool.pytest.ini_options]
|
|
192
|
-
testpaths = [
|
|
193
|
-
"tests",
|
|
194
|
-
"docs/.hooks"
|
|
195
|
-
]
|
|
195
|
+
testpaths = ["tests", "docs/.hooks"]
|
|
196
196
|
xfail_strict = true
|
|
197
197
|
filterwarnings = [
|
|
198
198
|
"error",
|
|
@@ -216,8 +216,6 @@ include = [
|
|
|
216
216
|
"pydantic_ai_slim/**/*.py",
|
|
217
217
|
"pydantic_evals/**/*.py",
|
|
218
218
|
"pydantic_graph/**/*.py",
|
|
219
|
-
# TODO(Marcelo): Add 100% coverage for A2A.
|
|
220
|
-
# "fasta2a/**/*.py",
|
|
221
219
|
"tests/**/*.py",
|
|
222
220
|
]
|
|
223
221
|
omit = [
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
from __future__ import annotations as _annotations
|
|
2
2
|
|
|
3
|
-
import asyncio
|
|
4
3
|
import json
|
|
5
4
|
import sys
|
|
6
5
|
from dataclasses import dataclass
|
|
@@ -8,7 +7,7 @@ from pathlib import Path
|
|
|
8
7
|
from typing import Any
|
|
9
8
|
|
|
10
9
|
import pytest
|
|
11
|
-
from dirty_equals import HasRepr
|
|
10
|
+
from dirty_equals import HasRepr, IsNumber
|
|
12
11
|
from inline_snapshot import snapshot
|
|
13
12
|
from pydantic import BaseModel
|
|
14
13
|
|
|
@@ -178,21 +177,21 @@ async def test_add_evaluator(
|
|
|
178
177
|
}
|
|
179
178
|
|
|
180
179
|
|
|
181
|
-
async def
|
|
180
|
+
async def test_evaluate_async(
|
|
182
181
|
example_dataset: Dataset[TaskInput, TaskOutput, TaskMetadata],
|
|
183
182
|
simple_evaluator: type[Evaluator[TaskInput, TaskOutput, TaskMetadata]],
|
|
184
183
|
):
|
|
185
184
|
"""Test evaluating a dataset."""
|
|
186
185
|
example_dataset.add_evaluator(simple_evaluator())
|
|
187
186
|
|
|
188
|
-
async def
|
|
187
|
+
async def mock_async_task(inputs: TaskInput) -> TaskOutput:
|
|
189
188
|
if inputs.query == 'What is 2+2?':
|
|
190
189
|
return TaskOutput(answer='4')
|
|
191
190
|
elif inputs.query == 'What is the capital of France?':
|
|
192
191
|
return TaskOutput(answer='Paris')
|
|
193
192
|
return TaskOutput(answer='Unknown') # pragma: no cover
|
|
194
193
|
|
|
195
|
-
report = await example_dataset.evaluate(
|
|
194
|
+
report = await example_dataset.evaluate(mock_async_task)
|
|
196
195
|
|
|
197
196
|
assert report is not None
|
|
198
197
|
assert len(report.cases) == 2
|
|
@@ -230,6 +229,58 @@ async def test_evaluate(
|
|
|
230
229
|
)
|
|
231
230
|
|
|
232
231
|
|
|
232
|
+
async def test_evaluate_sync(
|
|
233
|
+
example_dataset: Dataset[TaskInput, TaskOutput, TaskMetadata],
|
|
234
|
+
simple_evaluator: type[Evaluator[TaskInput, TaskOutput, TaskMetadata]],
|
|
235
|
+
):
|
|
236
|
+
"""Test evaluating a dataset."""
|
|
237
|
+
example_dataset.add_evaluator(simple_evaluator())
|
|
238
|
+
|
|
239
|
+
def mock_sync_task(inputs: TaskInput) -> TaskOutput:
|
|
240
|
+
if inputs.query == 'What is 2+2?':
|
|
241
|
+
return TaskOutput(answer='4')
|
|
242
|
+
elif inputs.query == 'What is the capital of France?':
|
|
243
|
+
return TaskOutput(answer='Paris')
|
|
244
|
+
return TaskOutput(answer='Unknown') # pragma: no cover
|
|
245
|
+
|
|
246
|
+
report = await example_dataset.evaluate(mock_sync_task)
|
|
247
|
+
|
|
248
|
+
assert report is not None
|
|
249
|
+
assert len(report.cases) == 2
|
|
250
|
+
assert ReportCaseAdapter.dump_python(report.cases[0]) == snapshot(
|
|
251
|
+
{
|
|
252
|
+
'assertions': {
|
|
253
|
+
'correct': {
|
|
254
|
+
'name': 'correct',
|
|
255
|
+
'reason': None,
|
|
256
|
+
'source': {'name': 'SimpleEvaluator', 'arguments': None},
|
|
257
|
+
'value': True,
|
|
258
|
+
}
|
|
259
|
+
},
|
|
260
|
+
'attributes': {},
|
|
261
|
+
'expected_output': {'answer': '4', 'confidence': 1.0},
|
|
262
|
+
'inputs': {'query': 'What is 2+2?'},
|
|
263
|
+
'labels': {},
|
|
264
|
+
'metadata': {'category': 'general', 'difficulty': 'easy'},
|
|
265
|
+
'metrics': {},
|
|
266
|
+
'name': 'case1',
|
|
267
|
+
'output': {'answer': '4', 'confidence': 1.0},
|
|
268
|
+
'scores': {
|
|
269
|
+
'confidence': {
|
|
270
|
+
'name': 'confidence',
|
|
271
|
+
'reason': None,
|
|
272
|
+
'source': {'name': 'SimpleEvaluator', 'arguments': None},
|
|
273
|
+
'value': 1.0,
|
|
274
|
+
}
|
|
275
|
+
},
|
|
276
|
+
'span_id': '0000000000000003',
|
|
277
|
+
'task_duration': IsNumber(), # the runtime behavior is not deterministic due to threading
|
|
278
|
+
'total_duration': IsNumber(), # the runtime behavior is not deterministic due to threading
|
|
279
|
+
'trace_id': '00000000000000000000000000000001',
|
|
280
|
+
}
|
|
281
|
+
)
|
|
282
|
+
|
|
283
|
+
|
|
233
284
|
async def test_evaluate_with_concurrency(
|
|
234
285
|
example_dataset: Dataset[TaskInput, TaskOutput, TaskMetadata],
|
|
235
286
|
simple_evaluator: type[Evaluator[TaskInput, TaskOutput, TaskMetadata]],
|
|
@@ -828,8 +879,8 @@ async def test_dataset_evaluate_with_sync_task(example_dataset: Dataset[TaskInpu
|
|
|
828
879
|
def sync_task(inputs: TaskInput) -> TaskOutput:
|
|
829
880
|
return TaskOutput(answer=inputs.query.upper())
|
|
830
881
|
|
|
831
|
-
report = await example_dataset.evaluate(
|
|
832
|
-
assert report.name == '
|
|
882
|
+
report = await example_dataset.evaluate(sync_task)
|
|
883
|
+
assert report.name == 'sync_task'
|
|
833
884
|
assert len(report.cases) == 2
|
|
834
885
|
|
|
835
886
|
|