pydantic-ai 0.1.9__tar.gz → 0.1.10__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.1.9 → pydantic_ai-0.1.10}/PKG-INFO +3 -3
- pydantic_ai-0.1.10/tests/models/cassettes/test_anthropic/test_extra_headers.yaml +57 -0
- pydantic_ai-0.1.10/tests/models/cassettes/test_groq/test_extra_headers.yaml +71 -0
- pydantic_ai-0.1.10/tests/models/cassettes/test_openai/test_extra_headers.yaml +80 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/test_anthropic.py +13 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/test_groq.py +9 -1
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/test_openai.py +8 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/.gitignore +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/LICENSE +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/Makefile +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/README.md +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/pyproject.toml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/__init__.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/assets/dummy.pdf +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/assets/kiwi.png +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/assets/marcelo.mp3 +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/assets/small_video.mp4 +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_mcp/test_agent_with_stdio_server.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_mcp/test_tool_returning_dict.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_mcp/test_tool_returning_error.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_mcp/test_tool_returning_image.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_mcp/test_tool_returning_image_resource.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_mcp/test_tool_returning_multiple_items.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_mcp/test_tool_returning_none.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_mcp/test_tool_returning_str.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_mcp/test_tool_returning_text_resource.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_settings/test_stop_settings[anthropic].yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_settings/test_stop_settings[bedrock].yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_settings/test_stop_settings[cohere].yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_settings/test_stop_settings[gemini].yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_settings/test_stop_settings[groq].yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_settings/test_stop_settings[mistral].yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_settings/test_stop_settings[openai].yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/conftest.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/evals/__init__.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/evals/test_dataset.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/evals/test_evaluator_base.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/evals/test_evaluator_common.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/evals/test_evaluator_context.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/evals/test_evaluator_spec.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/evals/test_evaluators.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/evals/test_llm_as_a_judge.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/evals/test_otel.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/evals/test_render_numbers.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/evals/test_reporting.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/evals/test_reports.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/evals/test_utils.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/evals/utils.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/example_modules/README.md +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/example_modules/bank_database.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/example_modules/fake_database.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/example_modules/weather_service.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/graph/__init__.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/graph/test_file_persistence.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/graph/test_graph.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/graph/test_mermaid.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/graph/test_persistence.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/graph/test_state.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/graph/test_utils.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/import_examples.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/json_body_serializer.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/mcp_server.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/__init__.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_anthropic/test_anthropic_model_instructions.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_anthropic/test_document_binary_content_input.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_anthropic/test_document_url_input.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_anthropic/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_anthropic/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_anthropic/test_image_url_input_invalid_mime_type.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_anthropic/test_multiple_parallel_tool_calls.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_anthropic/test_text_document_url_input.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_bedrock_empty_system_prompt.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_bedrock_model.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_bedrock_model_anthropic_model_without_tools.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_bedrock_model_guardrail_config.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_bedrock_model_instructions.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_bedrock_model_iter_stream.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_bedrock_model_max_tokens.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_bedrock_model_other_parameters.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_bedrock_model_performance_config.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_bedrock_model_retry.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_bedrock_model_stream.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_bedrock_model_structured_response.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_bedrock_model_top_p.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_bedrock_multiple_documents_in_history.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_document_url_input.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_text_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_text_document_url_input.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_video_url_input.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_cohere/test_cohere_model_instructions.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_cohere/test_request_simple_success_with_vcr.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_gemini/test_document_url_input.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_false.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_true.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_gemini/test_gemini_drop_exclusive_maximum.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_gemini/test_gemini_exclusive_minimum_and_maximum.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_gemini/test_gemini_model_instructions.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_gemini/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_gemini/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_gemini/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_gemini/test_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_gemini/test_video_url_input.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_groq/test_groq_model_instructions.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_groq/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_groq/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_groq/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_mistral/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_mistral/test_mistral_model_instructions.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_audio_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_document_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_document_url_input.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_image_url_tool_response.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4.5-preview].yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4o-mini].yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_max_completion_tokens[o3-mini].yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_multiple_agent_tool_calls.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_openai_audio_url_input.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_openai_instructions.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_openai_instructions_with_tool_calls_keep_instructions.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_openai_model_without_system_prompt.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[developer].yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[system].yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_user_id.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_audio_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_url_input.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_url_input.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_http_error.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_instructions.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_retry.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response_with_tool_call.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_openai_responses_output_type.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_effort.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_generate_summary.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_openai_responses_stream.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_openai_responses_system_prompt.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_openai_responses_text_document_url_input.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/mock_async_stream.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/test_bedrock.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/test_cohere.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/test_fallback.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/test_gemini.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/test_instrumented.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/test_mistral.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/test_model.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/test_model_function.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/test_model_names.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/test_model_test.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/test_openai_responses.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/providers/__init__.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/providers/cassettes/test_azure/test_azure_provider_call.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/providers/cassettes/test_google_vertex/test_vertexai_provider.yaml +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/providers/test_anthropic.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/providers/test_azure.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/providers/test_bedrock.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/providers/test_cohere.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/providers/test_deepseek.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/providers/test_google_gla.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/providers/test_google_vertex.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/providers/test_groq.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/providers/test_mistral.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/providers/test_openai.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/providers/test_provider_names.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_agent.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_cli.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_deps.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_examples.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_format_as_xml.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_json_body_serializer.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_live.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_logfire.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_mcp.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_messages.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_parts_manager.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_settings.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_streaming.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_tools.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_usage_limits.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_utils.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/typed_agent.py +0 -0
- {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/typed_graph.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pydantic-ai
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.10
|
|
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,9 @@ 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[anthropic,bedrock,cli,cohere,evals,groq,mcp,mistral,openai,vertexai]==0.1.
|
|
31
|
+
Requires-Dist: pydantic-ai-slim[anthropic,bedrock,cli,cohere,evals,groq,mcp,mistral,openai,vertexai]==0.1.10
|
|
32
32
|
Provides-Extra: examples
|
|
33
|
-
Requires-Dist: pydantic-ai-examples==0.1.
|
|
33
|
+
Requires-Dist: pydantic-ai-examples==0.1.10; extra == 'examples'
|
|
34
34
|
Provides-Extra: logfire
|
|
35
35
|
Requires-Dist: logfire>=3.11.0; extra == 'logfire'
|
|
36
36
|
Description-Content-Type: text/markdown
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
interactions:
|
|
2
|
+
- request:
|
|
3
|
+
headers:
|
|
4
|
+
accept:
|
|
5
|
+
- application/json
|
|
6
|
+
accept-encoding:
|
|
7
|
+
- gzip, deflate
|
|
8
|
+
connection:
|
|
9
|
+
- keep-alive
|
|
10
|
+
content-length:
|
|
11
|
+
- '202'
|
|
12
|
+
content-type:
|
|
13
|
+
- application/json
|
|
14
|
+
host:
|
|
15
|
+
- api.anthropic.com
|
|
16
|
+
xProxy-Limit-IDs:
|
|
17
|
+
- monthly_budget
|
|
18
|
+
method: POST
|
|
19
|
+
parsed_body:
|
|
20
|
+
max_tokens: 1024
|
|
21
|
+
messages:
|
|
22
|
+
- content:
|
|
23
|
+
- text: hello
|
|
24
|
+
type: text
|
|
25
|
+
role: user
|
|
26
|
+
model: claude-3-opus-latest
|
|
27
|
+
stream: false
|
|
28
|
+
uri: https://api.anthropic.com/v1/messages
|
|
29
|
+
response:
|
|
30
|
+
headers:
|
|
31
|
+
connection:
|
|
32
|
+
- keep-alive
|
|
33
|
+
content-length:
|
|
34
|
+
- '328'
|
|
35
|
+
content-type:
|
|
36
|
+
- application/json
|
|
37
|
+
transfer-encoding:
|
|
38
|
+
- chunked
|
|
39
|
+
parsed_body:
|
|
40
|
+
content:
|
|
41
|
+
- text: Hello! How can I assist you today?
|
|
42
|
+
type: text
|
|
43
|
+
id: msg_01U58nruzfn9BrXrrF2hhb4m
|
|
44
|
+
model: claude-3-5-haiku-latest
|
|
45
|
+
role: assistant
|
|
46
|
+
stop_reason: end_turn
|
|
47
|
+
stop_sequence: null
|
|
48
|
+
type: message
|
|
49
|
+
usage:
|
|
50
|
+
cache_creation_input_tokens: 0
|
|
51
|
+
cache_read_input_tokens: 0
|
|
52
|
+
input_tokens: 20
|
|
53
|
+
output_tokens: 10
|
|
54
|
+
status:
|
|
55
|
+
code: 200
|
|
56
|
+
message: OK
|
|
57
|
+
version: 1
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
interactions:
|
|
2
|
+
- request:
|
|
3
|
+
headers:
|
|
4
|
+
accept:
|
|
5
|
+
- application/json
|
|
6
|
+
accept-encoding:
|
|
7
|
+
- gzip, deflate
|
|
8
|
+
connection:
|
|
9
|
+
- keep-alive
|
|
10
|
+
content-length:
|
|
11
|
+
- '187'
|
|
12
|
+
content-type:
|
|
13
|
+
- application/json
|
|
14
|
+
host:
|
|
15
|
+
- api.groq.com
|
|
16
|
+
xProxy-Limit-IDs:
|
|
17
|
+
- monthly_budget
|
|
18
|
+
method: POST
|
|
19
|
+
parsed_body:
|
|
20
|
+
messages:
|
|
21
|
+
- content: hello
|
|
22
|
+
role: user
|
|
23
|
+
model: llama-3.3-70b-versatile
|
|
24
|
+
n: 1
|
|
25
|
+
stream: false
|
|
26
|
+
uri: https://api.groq.com/openai/v1/chat/completions
|
|
27
|
+
response:
|
|
28
|
+
headers:
|
|
29
|
+
alt-svc:
|
|
30
|
+
- h3=":443"; ma=86400
|
|
31
|
+
cache-control:
|
|
32
|
+
- private, max-age=0, no-store, no-cache, must-revalidate
|
|
33
|
+
connection:
|
|
34
|
+
- keep-alive
|
|
35
|
+
content-length:
|
|
36
|
+
- '570'
|
|
37
|
+
content-type:
|
|
38
|
+
- application/json
|
|
39
|
+
transfer-encoding:
|
|
40
|
+
- chunked
|
|
41
|
+
vary:
|
|
42
|
+
- Origin, Accept-Encoding
|
|
43
|
+
parsed_body:
|
|
44
|
+
choices:
|
|
45
|
+
- finish_reason: stop
|
|
46
|
+
index: 0
|
|
47
|
+
logprobs: null
|
|
48
|
+
message:
|
|
49
|
+
content: Hello! How can I assist you today?
|
|
50
|
+
role: assistant
|
|
51
|
+
created: 1744043573
|
|
52
|
+
id: chatcmpl-7586b6a9-fb4b-4ec7-86a0-59f0a77844cf
|
|
53
|
+
model: llama-3.3-70b-versatile
|
|
54
|
+
object: chat.completion
|
|
55
|
+
system_fingerprint: fp_72a5dc99ee
|
|
56
|
+
usage:
|
|
57
|
+
completion_time: 0.029090909
|
|
58
|
+
completion_tokens: 8
|
|
59
|
+
prompt_time: 0.002665957
|
|
60
|
+
prompt_tokens: 48
|
|
61
|
+
queue_time: 0.100731848
|
|
62
|
+
total_time: 0.031756866
|
|
63
|
+
total_tokens: 56
|
|
64
|
+
usage_breakdown:
|
|
65
|
+
models: null
|
|
66
|
+
x_groq:
|
|
67
|
+
id: req_01jr8hj0hzeq9b86xqb5dn7wqs
|
|
68
|
+
status:
|
|
69
|
+
code: 200
|
|
70
|
+
message: OK
|
|
71
|
+
version: 1
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
interactions:
|
|
2
|
+
- request:
|
|
3
|
+
headers:
|
|
4
|
+
accept:
|
|
5
|
+
- application/json
|
|
6
|
+
accept-encoding:
|
|
7
|
+
- gzip, deflate
|
|
8
|
+
connection:
|
|
9
|
+
- keep-alive
|
|
10
|
+
content-length:
|
|
11
|
+
- '103'
|
|
12
|
+
content-type:
|
|
13
|
+
- application/json
|
|
14
|
+
host:
|
|
15
|
+
- api.openai.com
|
|
16
|
+
xProxy-Limit-IDs:
|
|
17
|
+
- monthly_budget
|
|
18
|
+
method: POST
|
|
19
|
+
parsed_body:
|
|
20
|
+
messages:
|
|
21
|
+
- content: hello
|
|
22
|
+
role: user
|
|
23
|
+
model: gpt-4o
|
|
24
|
+
n: 1
|
|
25
|
+
stream: false
|
|
26
|
+
uri: https://api.openai.com/v1/chat/completions
|
|
27
|
+
response:
|
|
28
|
+
headers:
|
|
29
|
+
access-control-expose-headers:
|
|
30
|
+
- X-Request-ID
|
|
31
|
+
alt-svc:
|
|
32
|
+
- h3=":443"; ma=86400
|
|
33
|
+
connection:
|
|
34
|
+
- keep-alive
|
|
35
|
+
content-length:
|
|
36
|
+
- '835'
|
|
37
|
+
content-type:
|
|
38
|
+
- application/json
|
|
39
|
+
openai-organization:
|
|
40
|
+
- pydantic-28gund
|
|
41
|
+
openai-processing-ms:
|
|
42
|
+
- '584'
|
|
43
|
+
openai-version:
|
|
44
|
+
- '2020-10-01'
|
|
45
|
+
strict-transport-security:
|
|
46
|
+
- max-age=31536000; includeSubDomains; preload
|
|
47
|
+
transfer-encoding:
|
|
48
|
+
- chunked
|
|
49
|
+
parsed_body:
|
|
50
|
+
choices:
|
|
51
|
+
- finish_reason: stop
|
|
52
|
+
index: 0
|
|
53
|
+
logprobs: null
|
|
54
|
+
message:
|
|
55
|
+
annotations: []
|
|
56
|
+
content: Hello! How can I assist you today?
|
|
57
|
+
refusal: null
|
|
58
|
+
role: assistant
|
|
59
|
+
created: 1743073438
|
|
60
|
+
id: chatcmpl-BFfJeRdAVFPUVWxV3OYH1tSR5KvrI
|
|
61
|
+
model: gpt-4o-2024-08-06
|
|
62
|
+
object: chat.completion
|
|
63
|
+
service_tier: default
|
|
64
|
+
system_fingerprint: fp_898ac29719
|
|
65
|
+
usage:
|
|
66
|
+
completion_tokens: 10
|
|
67
|
+
completion_tokens_details:
|
|
68
|
+
accepted_prediction_tokens: 0
|
|
69
|
+
audio_tokens: 0
|
|
70
|
+
reasoning_tokens: 0
|
|
71
|
+
rejected_prediction_tokens: 0
|
|
72
|
+
prompt_tokens: 8
|
|
73
|
+
prompt_tokens_details:
|
|
74
|
+
audio_tokens: 0
|
|
75
|
+
cached_tokens: 0
|
|
76
|
+
total_tokens: 18
|
|
77
|
+
status:
|
|
78
|
+
code: 200
|
|
79
|
+
message: OK
|
|
80
|
+
version: 1
|
|
@@ -634,6 +634,19 @@ async def test_image_url_input(allow_model_requests: None, anthropic_api_key: st
|
|
|
634
634
|
)
|
|
635
635
|
|
|
636
636
|
|
|
637
|
+
@pytest.mark.vcr()
|
|
638
|
+
async def test_extra_headers(allow_model_requests: None, anthropic_api_key: str):
|
|
639
|
+
# This test doesn't do anything, it's just here to ensure that calls with `extra_headers` don't cause errors, including type.
|
|
640
|
+
m = AnthropicModel('claude-3-5-haiku-latest', provider=AnthropicProvider(api_key=anthropic_api_key))
|
|
641
|
+
agent = Agent(
|
|
642
|
+
m,
|
|
643
|
+
model_settings=AnthropicModelSettings(
|
|
644
|
+
anthropic_metadata={'user_id': '123'}, extra_headers={'Extra-Header-Key': 'Extra-Header-Value'}
|
|
645
|
+
),
|
|
646
|
+
)
|
|
647
|
+
await agent.run('hello')
|
|
648
|
+
|
|
649
|
+
|
|
637
650
|
@pytest.mark.vcr()
|
|
638
651
|
async def test_image_url_input_invalid_mime_type(allow_model_requests: None, anthropic_api_key: str):
|
|
639
652
|
m = AnthropicModel('claude-3-5-haiku-latest', provider=AnthropicProvider(api_key=anthropic_api_key))
|
|
@@ -46,7 +46,7 @@ with try_import() as imports_successful:
|
|
|
46
46
|
from groq.types.chat.chat_completion_message_tool_call import Function
|
|
47
47
|
from groq.types.completion_usage import CompletionUsage
|
|
48
48
|
|
|
49
|
-
from pydantic_ai.models.groq import GroqModel
|
|
49
|
+
from pydantic_ai.models.groq import GroqModel, GroqModelSettings
|
|
50
50
|
from pydantic_ai.providers.groq import GroqProvider
|
|
51
51
|
|
|
52
52
|
# note: we use Union here so that casting works with Python 3.9
|
|
@@ -504,6 +504,14 @@ async def test_no_delta(allow_model_requests: None):
|
|
|
504
504
|
assert result.is_complete
|
|
505
505
|
|
|
506
506
|
|
|
507
|
+
@pytest.mark.vcr()
|
|
508
|
+
async def test_extra_headers(allow_model_requests: None, groq_api_key: str):
|
|
509
|
+
# This test doesn't do anything, it's just here to ensure that calls with `extra_headers` don't cause errors, including type.
|
|
510
|
+
m = GroqModel('llama-3.3-70b-versatile', provider=GroqProvider(api_key=groq_api_key))
|
|
511
|
+
agent = Agent(m, model_settings=GroqModelSettings(extra_headers={'Extra-Header-Key': 'Extra-Header-Value'}))
|
|
512
|
+
await agent.run('hello')
|
|
513
|
+
|
|
514
|
+
|
|
507
515
|
@pytest.mark.vcr()
|
|
508
516
|
async def test_image_url_input(allow_model_requests: None, groq_api_key: str):
|
|
509
517
|
m = GroqModel('meta-llama/llama-4-scout-17b-16e-instruct', provider=GroqProvider(api_key=groq_api_key))
|
|
@@ -862,6 +862,14 @@ async def test_multiple_agent_tool_calls(allow_model_requests: None, gemini_api_
|
|
|
862
862
|
assert result.output == snapshot('The capital of England is London.')
|
|
863
863
|
|
|
864
864
|
|
|
865
|
+
@pytest.mark.vcr()
|
|
866
|
+
async def test_extra_headers(allow_model_requests: None, openai_api_key: str):
|
|
867
|
+
# This test doesn't do anything, it's just here to ensure that calls with `extra_headers` don't cause errors, including type.
|
|
868
|
+
m = OpenAIModel('gpt-4o', provider=OpenAIProvider(api_key=openai_api_key))
|
|
869
|
+
agent = Agent(m, model_settings=OpenAIModelSettings(extra_headers={'Extra-Header-Key': 'Extra-Header-Value'}))
|
|
870
|
+
await agent.run('hello')
|
|
871
|
+
|
|
872
|
+
|
|
865
873
|
@pytest.mark.vcr()
|
|
866
874
|
async def test_user_id(allow_model_requests: None, openai_api_key: str):
|
|
867
875
|
# This test doesn't do anything, it's just here to ensure that calls with `user` don't cause errors, including type.
|
|
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-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_mcp/test_agent_with_stdio_server.yaml
RENAMED
|
File without changes
|
{pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_mcp/test_tool_returning_dict.yaml
RENAMED
|
File without changes
|
{pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_mcp/test_tool_returning_error.yaml
RENAMED
|
File without changes
|
{pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_mcp/test_tool_returning_image.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_mcp/test_tool_returning_none.yaml
RENAMED
|
File without changes
|
{pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_mcp/test_tool_returning_str.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_settings/test_stop_settings[groq].yaml
RENAMED
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_bedrock_model.yaml
RENAMED
|
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
|
|
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
|
|
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-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_groq/test_image_url_input.yaml
RENAMED
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_user_id.yaml
RENAMED
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|