pydantic-ai 0.2.9__tar.gz → 0.2.11__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.2.9 → pydantic_ai-0.2.11}/PKG-INFO +3 -3
- pydantic_ai-0.2.11/tests/models/cassettes/test_anthropic/test_anthropic_model_empty_message_on_history.yaml +73 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/test_anthropic.py +28 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/test_mcp.py +27 -11
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/.gitignore +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/LICENSE +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/Makefile +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/README.md +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/pyproject.toml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/__init__.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/assets/dummy.pdf +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/assets/kiwi.png +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/assets/marcelo.mp3 +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/assets/small_video.mp4 +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/cassettes/test_mcp/test_agent_with_stdio_server.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/cassettes/test_mcp/test_tool_returning_dict.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/cassettes/test_mcp/test_tool_returning_error.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/cassettes/test_mcp/test_tool_returning_image.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/cassettes/test_mcp/test_tool_returning_image_resource.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/cassettes/test_mcp/test_tool_returning_multiple_items.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/cassettes/test_mcp/test_tool_returning_none.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/cassettes/test_mcp/test_tool_returning_str.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/cassettes/test_mcp/test_tool_returning_text_resource.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/cassettes/test_settings/test_stop_settings[anthropic].yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/cassettes/test_settings/test_stop_settings[bedrock].yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/cassettes/test_settings/test_stop_settings[cohere].yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/cassettes/test_settings/test_stop_settings[gemini].yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/cassettes/test_settings/test_stop_settings[groq].yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/cassettes/test_settings/test_stop_settings[mistral].yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/cassettes/test_settings/test_stop_settings[openai].yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/conftest.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/evals/__init__.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/evals/test_dataset.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/evals/test_evaluator_base.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/evals/test_evaluator_common.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/evals/test_evaluator_context.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/evals/test_evaluator_spec.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/evals/test_evaluators.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/evals/test_llm_as_a_judge.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/evals/test_otel.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/evals/test_render_numbers.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/evals/test_reporting.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/evals/test_reports.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/evals/test_utils.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/evals/utils.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/example_modules/README.md +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/example_modules/bank_database.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/example_modules/fake_database.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/example_modules/weather_service.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/fasta2a/__init__.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/fasta2a/test_applications.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/graph/__init__.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/graph/test_file_persistence.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/graph/test_graph.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/graph/test_mermaid.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/graph/test_persistence.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/graph/test_state.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/graph/test_utils.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/import_examples.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/json_body_serializer.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/mcp_server.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/__init__.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_anthropic/test_anthropic_model_instructions.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_anthropic/test_document_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_anthropic/test_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_anthropic/test_extra_headers.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_anthropic/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_anthropic/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_anthropic/test_image_url_input_invalid_mime_type.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_anthropic/test_multiple_parallel_tool_calls.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_anthropic/test_text_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_bedrock/test_bedrock_empty_system_prompt.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_bedrock/test_bedrock_model.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_bedrock/test_bedrock_model_anthropic_model_without_tools.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_bedrock/test_bedrock_model_guardrail_config.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_bedrock/test_bedrock_model_instructions.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_bedrock/test_bedrock_model_iter_stream.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_bedrock/test_bedrock_model_max_tokens.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_bedrock/test_bedrock_model_other_parameters.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_bedrock/test_bedrock_model_performance_config.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_bedrock/test_bedrock_model_retry.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_bedrock/test_bedrock_model_stream.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_bedrock/test_bedrock_model_structured_response.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_bedrock/test_bedrock_model_top_p.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_bedrock/test_bedrock_multiple_documents_in_history.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_bedrock/test_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_bedrock/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_bedrock/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_bedrock/test_text_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_bedrock/test_text_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_bedrock/test_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_bedrock/test_video_url_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_cohere/test_cohere_model_instructions.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_cohere/test_request_simple_success_with_vcr.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_gemini/test_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_false.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_true.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_gemini/test_gemini_drop_exclusive_maximum.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_gemini/test_gemini_exclusive_minimum_and_maximum.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_gemini/test_gemini_model_instructions.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_gemini/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_gemini/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_gemini/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_gemini/test_labels_are_ignored_with_gla_provider.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_gemini/test_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_gemini/test_video_url_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_gemini_vertexai/test_labels.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_google/test_google_model.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_google/test_google_model_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_google/test_google_model_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_google/test_google_model_image_url_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_google/test_google_model_instructions.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_google/test_google_model_iter_stream.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_google/test_google_model_max_tokens.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_google/test_google_model_multiple_documents_in_history.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_google/test_google_model_retry.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_google/test_google_model_safety_settings.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_google/test_google_model_stream.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_google/test_google_model_structured_response.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_google/test_google_model_text_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_google/test_google_model_text_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_google/test_google_model_thinking_config.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_google/test_google_model_top_p.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_google/test_google_model_vertex_labels.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_google/test_google_model_vertex_provider.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_google/test_google_model_video_url_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_groq/test_extra_headers.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_groq/test_groq_model_instructions.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_groq/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_groq/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_groq/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_mistral/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_mistral/test_mistral_model_instructions.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai/test_audio_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai/test_document_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai/test_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai/test_extra_headers.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai/test_image_url_tool_response.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4.5-preview].yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4o-mini].yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai/test_max_completion_tokens[o3-mini].yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai/test_multiple_agent_tool_calls.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai/test_openai_audio_url_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai/test_openai_instructions.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai/test_openai_instructions_with_tool_calls_keep_instructions.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai/test_openai_model_without_system_prompt.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[developer].yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[system].yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai/test_user_id.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai_responses/test_audio_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_url_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_http_error.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_instructions.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_retry.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response_with_tool_call.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_output_type.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_effort.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_generate_summary.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_stream.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_system_prompt.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_text_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/mock_async_stream.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/test_bedrock.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/test_cohere.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/test_fallback.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/test_gemini.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/test_gemini_vertexai.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/test_google.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/test_groq.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/test_instrumented.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/test_mistral.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/test_model.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/test_model_function.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/test_model_names.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/test_model_request_parameters.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/test_model_test.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/test_openai.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/test_openai_responses.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/providers/__init__.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/providers/cassettes/test_azure/test_azure_provider_call.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/providers/cassettes/test_google_vertex/test_vertexai_provider.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/providers/cassettes/test_openrouter/test_openrouter_with_google_model.yaml +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/providers/test_anthropic.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/providers/test_azure.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/providers/test_bedrock.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/providers/test_cohere.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/providers/test_deepseek.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/providers/test_google_gla.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/providers/test_google_vertex.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/providers/test_groq.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/providers/test_mistral.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/providers/test_openai.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/providers/test_openrouter.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/providers/test_provider_names.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/test_a2a.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/test_agent.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/test_cli.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/test_deps.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/test_direct.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/test_examples.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/test_format_as_xml.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/test_json_body_serializer.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/test_live.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/test_logfire.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/test_messages.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/test_parts_manager.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/test_settings.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/test_streaming.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/test_tools.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/test_usage_limits.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/test_utils.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/typed_agent.py +0 -0
- {pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/typed_graph.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pydantic-ai
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.11
|
|
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[a2a,anthropic,bedrock,cli,cohere,evals,google,groq,mcp,mistral,openai,vertexai]==0.2.
|
|
31
|
+
Requires-Dist: pydantic-ai-slim[a2a,anthropic,bedrock,cli,cohere,evals,google,groq,mcp,mistral,openai,vertexai]==0.2.11
|
|
32
32
|
Provides-Extra: examples
|
|
33
|
-
Requires-Dist: pydantic-ai-examples==0.2.
|
|
33
|
+
Requires-Dist: pydantic-ai-examples==0.2.11; 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,73 @@
|
|
|
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
|
+
- '281'
|
|
12
|
+
content-type:
|
|
13
|
+
- application/json
|
|
14
|
+
host:
|
|
15
|
+
- api.anthropic.com
|
|
16
|
+
method: POST
|
|
17
|
+
parsed_body:
|
|
18
|
+
max_tokens: 1024
|
|
19
|
+
messages:
|
|
20
|
+
- content:
|
|
21
|
+
- text: Hello, how can I help you?
|
|
22
|
+
type: text
|
|
23
|
+
role: assistant
|
|
24
|
+
- content:
|
|
25
|
+
- text: I need a potato!
|
|
26
|
+
type: text
|
|
27
|
+
role: user
|
|
28
|
+
model: claude-3-5-sonnet-latest
|
|
29
|
+
stream: false
|
|
30
|
+
system: |+
|
|
31
|
+
You are a helpful assistant.
|
|
32
|
+
|
|
33
|
+
uri: https://api.anthropic.com/v1/messages?beta=true
|
|
34
|
+
response:
|
|
35
|
+
headers:
|
|
36
|
+
connection:
|
|
37
|
+
- keep-alive
|
|
38
|
+
content-length:
|
|
39
|
+
- '671'
|
|
40
|
+
content-type:
|
|
41
|
+
- application/json
|
|
42
|
+
strict-transport-security:
|
|
43
|
+
- max-age=31536000; includeSubDomains; preload
|
|
44
|
+
transfer-encoding:
|
|
45
|
+
- chunked
|
|
46
|
+
parsed_body:
|
|
47
|
+
content:
|
|
48
|
+
- text: |-
|
|
49
|
+
I can't physically give you a potato since I'm a computer program. However, I can:
|
|
50
|
+
|
|
51
|
+
1. Help you find recipes that use potatoes
|
|
52
|
+
2. Give you tips on how to select, store, or cook potatoes
|
|
53
|
+
3. Share information about different potato varieties
|
|
54
|
+
4. Provide guidance on growing potatoes
|
|
55
|
+
|
|
56
|
+
What specifically would you like to know about potatoes?
|
|
57
|
+
type: text
|
|
58
|
+
id: msg_01UjnDmX3B57Drosu49sMteT
|
|
59
|
+
model: claude-3-5-sonnet-20241022
|
|
60
|
+
role: assistant
|
|
61
|
+
stop_reason: end_turn
|
|
62
|
+
stop_sequence: null
|
|
63
|
+
type: message
|
|
64
|
+
usage:
|
|
65
|
+
cache_creation_input_tokens: 0
|
|
66
|
+
cache_read_input_tokens: 0
|
|
67
|
+
input_tokens: 41
|
|
68
|
+
output_tokens: 82
|
|
69
|
+
service_tier: standard
|
|
70
|
+
status:
|
|
71
|
+
code: 200
|
|
72
|
+
message: OK
|
|
73
|
+
version: 1
|
|
@@ -1035,3 +1035,31 @@ def anth_msg(usage: BetaUsage) -> BetaMessage:
|
|
|
1035
1035
|
)
|
|
1036
1036
|
def test_usage(message_callback: Callable[[], BetaMessage | BetaRawMessageStreamEvent], usage: Usage):
|
|
1037
1037
|
assert _map_usage(message_callback()) == usage
|
|
1038
|
+
|
|
1039
|
+
|
|
1040
|
+
@pytest.mark.vcr()
|
|
1041
|
+
async def test_anthropic_model_empty_message_on_history(allow_model_requests: None, anthropic_api_key: str):
|
|
1042
|
+
"""The Anthropic API will error if you send an empty message on the history.
|
|
1043
|
+
|
|
1044
|
+
Check <https://github.com/pydantic/pydantic-ai/pull/1027> for more details.
|
|
1045
|
+
"""
|
|
1046
|
+
m = AnthropicModel('claude-3-5-sonnet-latest', provider=AnthropicProvider(api_key=anthropic_api_key))
|
|
1047
|
+
agent = Agent(m, instructions='You are a helpful assistant.')
|
|
1048
|
+
|
|
1049
|
+
result = await agent.run(
|
|
1050
|
+
'I need a potato!',
|
|
1051
|
+
message_history=[
|
|
1052
|
+
ModelRequest(parts=[], instructions='You are a helpful assistant.', kind='request'),
|
|
1053
|
+
ModelResponse(parts=[TextPart(content='Hello, how can I help you?')], kind='response'),
|
|
1054
|
+
],
|
|
1055
|
+
)
|
|
1056
|
+
assert result.output == snapshot("""\
|
|
1057
|
+
I can't physically give you a potato since I'm a computer program. However, I can:
|
|
1058
|
+
|
|
1059
|
+
1. Help you find recipes that use potatoes
|
|
1060
|
+
2. Give you tips on how to select, store, or cook potatoes
|
|
1061
|
+
3. Share information about different potato varieties
|
|
1062
|
+
4. Provide guidance on growing potatoes
|
|
1063
|
+
|
|
1064
|
+
What specifically would you like to know about potatoes?\
|
|
1065
|
+
""")
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""Tests for the MCP (Model Context Protocol) server implementation."""
|
|
2
2
|
|
|
3
3
|
import re
|
|
4
|
+
from datetime import timedelta
|
|
4
5
|
from pathlib import Path
|
|
5
6
|
|
|
6
7
|
import pytest
|
|
@@ -70,25 +71,40 @@ async def test_stdio_server_with_cwd():
|
|
|
70
71
|
assert len(tools) == 10
|
|
71
72
|
|
|
72
73
|
|
|
73
|
-
def
|
|
74
|
-
|
|
75
|
-
assert
|
|
76
|
-
assert
|
|
74
|
+
def test_http_server():
|
|
75
|
+
http_server = MCPServerHTTP(url='http://localhost:8000/sse')
|
|
76
|
+
assert http_server.url == 'http://localhost:8000/sse'
|
|
77
|
+
assert http_server._get_log_level() is None # pyright: ignore[reportPrivateUsage]
|
|
77
78
|
|
|
78
79
|
|
|
79
|
-
def
|
|
80
|
-
|
|
80
|
+
def test_http_server_with_header_and_timeout():
|
|
81
|
+
http_server = MCPServerHTTP(
|
|
81
82
|
url='http://localhost:8000/sse',
|
|
82
83
|
headers={'my-custom-header': 'my-header-value'},
|
|
83
84
|
timeout=10,
|
|
84
85
|
sse_read_timeout=100,
|
|
85
86
|
log_level='info',
|
|
86
87
|
)
|
|
87
|
-
assert
|
|
88
|
-
assert
|
|
89
|
-
assert
|
|
90
|
-
assert
|
|
91
|
-
assert
|
|
88
|
+
assert http_server.url == 'http://localhost:8000/sse'
|
|
89
|
+
assert http_server.headers is not None and http_server.headers['my-custom-header'] == 'my-header-value'
|
|
90
|
+
assert http_server.timeout == 10
|
|
91
|
+
assert http_server.sse_read_timeout == 100
|
|
92
|
+
assert http_server._get_log_level() == 'info' # pyright: ignore[reportPrivateUsage]
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
def test_http_server_with_timedelta_arguments():
|
|
96
|
+
http_server = MCPServerHTTP(
|
|
97
|
+
url='http://localhost:8000/sse',
|
|
98
|
+
headers={'my-custom-header': 'my-header-value'},
|
|
99
|
+
timeout=timedelta(seconds=10), # type: ignore[arg-type]
|
|
100
|
+
sse_read_timeout=timedelta(seconds=100), # type: ignore[arg-type]
|
|
101
|
+
log_level='info',
|
|
102
|
+
)
|
|
103
|
+
assert http_server.url == 'http://localhost:8000/sse'
|
|
104
|
+
assert http_server.headers is not None and http_server.headers['my-custom-header'] == 'my-header-value'
|
|
105
|
+
assert http_server.timeout == 10
|
|
106
|
+
assert http_server.sse_read_timeout == 100
|
|
107
|
+
assert http_server._get_log_level() == 'info' # pyright: ignore[reportPrivateUsage]
|
|
92
108
|
|
|
93
109
|
|
|
94
110
|
@pytest.mark.vcr()
|
|
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.2.9 → pydantic_ai-0.2.11}/tests/cassettes/test_mcp/test_agent_with_stdio_server.yaml
RENAMED
|
File without changes
|
{pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/cassettes/test_mcp/test_tool_returning_dict.yaml
RENAMED
|
File without changes
|
{pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/cassettes/test_mcp/test_tool_returning_error.yaml
RENAMED
|
File without changes
|
{pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/cassettes/test_mcp/test_tool_returning_image.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/cassettes/test_mcp/test_tool_returning_none.yaml
RENAMED
|
File without changes
|
{pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/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.2.9 → pydantic_ai-0.2.11}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/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
|
{pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_google/test_google_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
|
{pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_groq/test_extra_headers.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/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
|
{pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/tests/models/cassettes/test_openai/test_extra_headers.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
|
{pydantic_ai-0.2.9 → pydantic_ai-0.2.11}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|