pydantic-ai 0.2.5__tar.gz → 0.2.6__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.5 → pydantic_ai-0.2.6}/PKG-INFO +3 -3
- pydantic_ai-0.2.6/tests/fasta2a/test_applications.py +45 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/test_agent.py +7 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/test_cli.py +3 -11
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/test_tools.py +35 -1
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/.gitignore +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/LICENSE +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/Makefile +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/README.md +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/pyproject.toml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/__init__.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/assets/dummy.pdf +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/assets/kiwi.png +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/assets/marcelo.mp3 +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/assets/small_video.mp4 +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/cassettes/test_mcp/test_agent_with_stdio_server.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/cassettes/test_mcp/test_tool_returning_dict.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/cassettes/test_mcp/test_tool_returning_error.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/cassettes/test_mcp/test_tool_returning_image.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/cassettes/test_mcp/test_tool_returning_image_resource.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/cassettes/test_mcp/test_tool_returning_multiple_items.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/cassettes/test_mcp/test_tool_returning_none.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/cassettes/test_mcp/test_tool_returning_str.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/cassettes/test_mcp/test_tool_returning_text_resource.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/cassettes/test_settings/test_stop_settings[anthropic].yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/cassettes/test_settings/test_stop_settings[bedrock].yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/cassettes/test_settings/test_stop_settings[cohere].yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/cassettes/test_settings/test_stop_settings[gemini].yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/cassettes/test_settings/test_stop_settings[groq].yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/cassettes/test_settings/test_stop_settings[mistral].yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/cassettes/test_settings/test_stop_settings[openai].yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/conftest.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/evals/__init__.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/evals/test_dataset.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/evals/test_evaluator_base.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/evals/test_evaluator_common.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/evals/test_evaluator_context.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/evals/test_evaluator_spec.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/evals/test_evaluators.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/evals/test_llm_as_a_judge.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/evals/test_otel.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/evals/test_render_numbers.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/evals/test_reporting.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/evals/test_reports.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/evals/test_utils.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/evals/utils.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/example_modules/README.md +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/example_modules/bank_database.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/example_modules/fake_database.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/example_modules/weather_service.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/fasta2a/__init__.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/graph/__init__.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/graph/test_file_persistence.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/graph/test_graph.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/graph/test_mermaid.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/graph/test_persistence.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/graph/test_state.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/graph/test_utils.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/import_examples.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/json_body_serializer.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/mcp_server.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/__init__.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_anthropic/test_anthropic_model_instructions.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_anthropic/test_document_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_anthropic/test_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_anthropic/test_extra_headers.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_anthropic/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_anthropic/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_anthropic/test_image_url_input_invalid_mime_type.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_anthropic/test_multiple_parallel_tool_calls.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_anthropic/test_text_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_bedrock/test_bedrock_empty_system_prompt.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_bedrock/test_bedrock_model.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_anthropic_model_without_tools.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_guardrail_config.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_instructions.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_iter_stream.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_max_tokens.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_other_parameters.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_performance_config.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_retry.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_stream.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_structured_response.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_top_p.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_bedrock/test_bedrock_multiple_documents_in_history.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_bedrock/test_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_bedrock/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_bedrock/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_bedrock/test_text_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_bedrock/test_text_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_bedrock/test_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_bedrock/test_video_url_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_cohere/test_cohere_model_instructions.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_cohere/test_request_simple_success_with_vcr.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_gemini/test_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_false.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_true.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_gemini/test_gemini_drop_exclusive_maximum.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_gemini/test_gemini_exclusive_minimum_and_maximum.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_gemini/test_gemini_model_instructions.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_gemini/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_gemini/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_gemini/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_gemini/test_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_gemini/test_video_url_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_google/test_google_model.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_google/test_google_model_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_google/test_google_model_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_google/test_google_model_image_url_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_google/test_google_model_instructions.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_google/test_google_model_iter_stream.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_google/test_google_model_max_tokens.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_google/test_google_model_multiple_documents_in_history.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_google/test_google_model_retry.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_google/test_google_model_safety_settings.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_google/test_google_model_stream.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_google/test_google_model_structured_response.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_google/test_google_model_text_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_google/test_google_model_text_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_google/test_google_model_thinking_config.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_google/test_google_model_top_p.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_google/test_google_model_vertex_provider.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_google/test_google_model_video_url_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_groq/test_extra_headers.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_groq/test_groq_model_instructions.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_groq/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_groq/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_groq/test_image_url_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_mistral/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_mistral/test_mistral_model_instructions.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai/test_audio_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai/test_document_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai/test_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai/test_extra_headers.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai/test_image_url_tool_response.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4.5-preview].yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4o-mini].yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai/test_max_completion_tokens[o3-mini].yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai/test_multiple_agent_tool_calls.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai/test_openai_audio_url_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai/test_openai_instructions.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai/test_openai_instructions_with_tool_calls_keep_instructions.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai/test_openai_model_without_system_prompt.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[developer].yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[system].yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai/test_user_id.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai_responses/test_audio_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_tool_response.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_as_binary_content_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_url_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_http_error.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_instructions.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_retry.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response_with_tool_call.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_output_type.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_effort.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_generate_summary.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_stream.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_system_prompt.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_text_document_url_input.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/mock_async_stream.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/test_anthropic.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/test_bedrock.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/test_cohere.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/test_fallback.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/test_gemini.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/test_google.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/test_groq.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/test_instrumented.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/test_mistral.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/test_model.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/test_model_function.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/test_model_names.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/test_model_request_parameters.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/test_model_test.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/test_openai.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/test_openai_responses.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/providers/__init__.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/providers/cassettes/test_azure/test_azure_provider_call.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/providers/cassettes/test_google_vertex/test_vertexai_provider.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/providers/cassettes/test_openrouter/test_openrouter_with_google_model.yaml +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/providers/test_anthropic.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/providers/test_azure.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/providers/test_bedrock.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/providers/test_cohere.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/providers/test_deepseek.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/providers/test_google_gla.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/providers/test_google_vertex.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/providers/test_groq.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/providers/test_mistral.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/providers/test_openai.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/providers/test_openrouter.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/providers/test_provider_names.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/test_a2a.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/test_deps.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/test_direct.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/test_examples.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/test_format_as_xml.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/test_json_body_serializer.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/test_live.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/test_logfire.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/test_mcp.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/test_messages.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/test_parts_manager.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/test_settings.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/test_streaming.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/test_usage_limits.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/test_utils.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/typed_agent.py +0 -0
- {pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/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.6
|
|
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.6
|
|
32
32
|
Provides-Extra: examples
|
|
33
|
-
Requires-Dist: pydantic-ai-examples==0.2.
|
|
33
|
+
Requires-Dist: pydantic-ai-examples==0.2.6; 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,45 @@
|
|
|
1
|
+
from __future__ import annotations as _annotations
|
|
2
|
+
|
|
3
|
+
from contextlib import asynccontextmanager
|
|
4
|
+
|
|
5
|
+
import httpx
|
|
6
|
+
import pytest
|
|
7
|
+
from asgi_lifespan import LifespanManager
|
|
8
|
+
from inline_snapshot import snapshot
|
|
9
|
+
|
|
10
|
+
from ..conftest import try_import
|
|
11
|
+
|
|
12
|
+
with try_import() as imports_successful:
|
|
13
|
+
from fasta2a.applications import FastA2A
|
|
14
|
+
from fasta2a.broker import InMemoryBroker
|
|
15
|
+
from fasta2a.storage import InMemoryStorage
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
pytestmark = [pytest.mark.anyio, pytest.mark.skipif(not imports_successful(), reason='fasta2a not installed')]
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@asynccontextmanager
|
|
22
|
+
async def create_test_client(app: FastA2A):
|
|
23
|
+
async with LifespanManager(app=app) as manager:
|
|
24
|
+
transport = httpx.ASGITransport(app=manager.app)
|
|
25
|
+
async with httpx.AsyncClient(transport=transport, base_url='http://testclient') as client:
|
|
26
|
+
yield client
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
async def test_agent_card():
|
|
30
|
+
app = FastA2A(storage=InMemoryStorage(), broker=InMemoryBroker())
|
|
31
|
+
async with create_test_client(app) as client:
|
|
32
|
+
response = await client.get('/.well-known/agent.json')
|
|
33
|
+
assert response.status_code == 200
|
|
34
|
+
assert response.json() == snapshot(
|
|
35
|
+
{
|
|
36
|
+
'name': 'Agent',
|
|
37
|
+
'url': 'http://localhost:8000',
|
|
38
|
+
'version': '1.0.0',
|
|
39
|
+
'skills': [],
|
|
40
|
+
'defaultInputModes': ['application/json'],
|
|
41
|
+
'defaultOutputModes': ['application/json'],
|
|
42
|
+
'capabilities': {'streaming': False, 'pushNotifications': False, 'stateTransitionHistory': False},
|
|
43
|
+
'authentication': {'schemes': []},
|
|
44
|
+
}
|
|
45
|
+
)
|
|
@@ -1968,3 +1968,10 @@ def test_agent_run_result_serialization() -> None:
|
|
|
1968
1968
|
# Check that we can load the data back
|
|
1969
1969
|
deserialized_result = adapter.validate_json(serialized_data)
|
|
1970
1970
|
assert deserialized_result == result
|
|
1971
|
+
|
|
1972
|
+
|
|
1973
|
+
def test_agent_repr() -> None:
|
|
1974
|
+
agent = Agent()
|
|
1975
|
+
assert repr(agent) == snapshot(
|
|
1976
|
+
"Agent(model=None, name=None, end_strategy='early', model_settings=None, output_type=<class 'str'>, instrument=None)"
|
|
1977
|
+
)
|
|
@@ -224,27 +224,21 @@ def test_code_theme_unset(mocker: MockerFixture, env: TestEnv):
|
|
|
224
224
|
env.set('OPENAI_API_KEY', 'test')
|
|
225
225
|
mock_run_chat = mocker.patch('pydantic_ai._cli.run_chat')
|
|
226
226
|
cli([])
|
|
227
|
-
mock_run_chat.assert_awaited_once_with(
|
|
228
|
-
IsInstance(PromptSession), True, IsInstance(Agent), IsInstance(Console), 'monokai', 'pai'
|
|
229
|
-
)
|
|
227
|
+
mock_run_chat.assert_awaited_once_with(True, IsInstance(Agent), IsInstance(Console), 'monokai', 'pai')
|
|
230
228
|
|
|
231
229
|
|
|
232
230
|
def test_code_theme_light(mocker: MockerFixture, env: TestEnv):
|
|
233
231
|
env.set('OPENAI_API_KEY', 'test')
|
|
234
232
|
mock_run_chat = mocker.patch('pydantic_ai._cli.run_chat')
|
|
235
233
|
cli(['--code-theme=light'])
|
|
236
|
-
mock_run_chat.assert_awaited_once_with(
|
|
237
|
-
IsInstance(PromptSession), True, IsInstance(Agent), IsInstance(Console), 'default', 'pai'
|
|
238
|
-
)
|
|
234
|
+
mock_run_chat.assert_awaited_once_with(True, IsInstance(Agent), IsInstance(Console), 'default', 'pai')
|
|
239
235
|
|
|
240
236
|
|
|
241
237
|
def test_code_theme_dark(mocker: MockerFixture, env: TestEnv):
|
|
242
238
|
env.set('OPENAI_API_KEY', 'test')
|
|
243
239
|
mock_run_chat = mocker.patch('pydantic_ai._cli.run_chat')
|
|
244
240
|
cli(['--code-theme=dark'])
|
|
245
|
-
mock_run_chat.assert_awaited_once_with(
|
|
246
|
-
IsInstance(PromptSession), True, IsInstance(Agent), IsInstance(Console), 'monokai', 'pai'
|
|
247
|
-
)
|
|
241
|
+
mock_run_chat.assert_awaited_once_with(True, IsInstance(Agent), IsInstance(Console), 'monokai', 'pai')
|
|
248
242
|
|
|
249
243
|
|
|
250
244
|
def test_agent_to_cli_sync(mocker: MockerFixture, env: TestEnv):
|
|
@@ -252,7 +246,6 @@ def test_agent_to_cli_sync(mocker: MockerFixture, env: TestEnv):
|
|
|
252
246
|
mock_run_chat = mocker.patch('pydantic_ai._cli.run_chat')
|
|
253
247
|
cli_agent.to_cli_sync()
|
|
254
248
|
mock_run_chat.assert_awaited_once_with(
|
|
255
|
-
session=IsInstance(PromptSession),
|
|
256
249
|
stream=True,
|
|
257
250
|
agent=IsInstance(Agent),
|
|
258
251
|
console=IsInstance(Console),
|
|
@@ -268,7 +261,6 @@ async def test_agent_to_cli_async(mocker: MockerFixture, env: TestEnv):
|
|
|
268
261
|
mock_run_chat = mocker.patch('pydantic_ai._cli.run_chat')
|
|
269
262
|
await cli_agent.to_cli()
|
|
270
263
|
mock_run_chat.assert_awaited_once_with(
|
|
271
|
-
session=IsInstance(PromptSession),
|
|
272
264
|
stream=True,
|
|
273
265
|
agent=IsInstance(Agent),
|
|
274
266
|
console=IsInstance(Console),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import json
|
|
2
|
-
from dataclasses import dataclass
|
|
2
|
+
from dataclasses import dataclass, replace
|
|
3
3
|
from typing import Annotated, Any, Callable, Literal, Union
|
|
4
4
|
|
|
5
5
|
import pydantic_core
|
|
@@ -954,3 +954,37 @@ def test_tool_parameters_with_attribute_docstrings():
|
|
|
954
954
|
'strict': None,
|
|
955
955
|
}
|
|
956
956
|
)
|
|
957
|
+
|
|
958
|
+
|
|
959
|
+
def test_dynamic_tools_agent_wide():
|
|
960
|
+
async def prepare_tool_defs(
|
|
961
|
+
ctx: RunContext[int], tool_defs: list[ToolDefinition]
|
|
962
|
+
) -> Union[list[ToolDefinition], None]:
|
|
963
|
+
if ctx.deps == 42:
|
|
964
|
+
return []
|
|
965
|
+
elif ctx.deps == 43:
|
|
966
|
+
return None
|
|
967
|
+
elif ctx.deps == 21:
|
|
968
|
+
return [replace(tool_def, strict=True) for tool_def in tool_defs]
|
|
969
|
+
return tool_defs
|
|
970
|
+
|
|
971
|
+
agent = Agent('test', deps_type=int, prepare_tools=prepare_tool_defs)
|
|
972
|
+
|
|
973
|
+
@agent.tool
|
|
974
|
+
def foobar(ctx: RunContext[int], x: int, y: str) -> str:
|
|
975
|
+
return f'{ctx.deps} {x} {y}'
|
|
976
|
+
|
|
977
|
+
result = agent.run_sync('', deps=42)
|
|
978
|
+
assert result.output == snapshot('success (no tool calls)')
|
|
979
|
+
|
|
980
|
+
result = agent.run_sync('', deps=43)
|
|
981
|
+
assert result.output == snapshot('success (no tool calls)')
|
|
982
|
+
|
|
983
|
+
with agent.override(model=FunctionModel(get_json_schema)):
|
|
984
|
+
result = agent.run_sync('', deps=21)
|
|
985
|
+
json_schema = json.loads(result.output)
|
|
986
|
+
assert agent._function_tools['foobar'].strict is None
|
|
987
|
+
assert json_schema['strict'] is True
|
|
988
|
+
|
|
989
|
+
result = agent.run_sync('', deps=1)
|
|
990
|
+
assert result.output == snapshot('{"foobar":"1 0 a"}')
|
|
File without changes
|
|
File without changes
|
|
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.5 → pydantic_ai-0.2.6}/tests/cassettes/test_mcp/test_agent_with_stdio_server.yaml
RENAMED
|
File without changes
|
{pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/cassettes/test_mcp/test_tool_returning_dict.yaml
RENAMED
|
File without changes
|
{pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/cassettes/test_mcp/test_tool_returning_error.yaml
RENAMED
|
File without changes
|
{pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/cassettes/test_mcp/test_tool_returning_image.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/cassettes/test_mcp/test_tool_returning_none.yaml
RENAMED
|
File without changes
|
{pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/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.5 → pydantic_ai-0.2.6}/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
|
{pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/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
|
{pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_gemini/test_image_url_input.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/tests/models/cassettes/test_gemini/test_video_url_input.yaml
RENAMED
|
File without changes
|
{pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/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
|
{pydantic_ai-0.2.5 → pydantic_ai-0.2.6}/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.5 → pydantic_ai-0.2.6}/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.5 → pydantic_ai-0.2.6}/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.5 → pydantic_ai-0.2.6}/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
|