pydantic-ai 1.0.0__tar.gz → 1.0.1__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.

Files changed (408) hide show
  1. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/PKG-INFO +3 -3
  2. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/evals/test_dataset.py +11 -2
  3. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/evals/test_evaluator_common.py +0 -64
  4. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/evals/test_evaluators.py +40 -32
  5. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/.gitignore +0 -0
  6. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/LICENSE +0 -0
  7. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/Makefile +0 -0
  8. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/README.md +0 -0
  9. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/pyproject.toml +0 -0
  10. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/__init__.py +0 -0
  11. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/assets/dummy.pdf +0 -0
  12. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/assets/kiwi.png +0 -0
  13. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/assets/marcelo.mp3 +0 -0
  14. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/assets/product_name.txt +0 -0
  15. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/assets/small_video.mp4 +0 -0
  16. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_mcp/test_agent_with_server_not_running.yaml +0 -0
  17. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_mcp/test_agent_with_stdio_server.yaml +0 -0
  18. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_mcp/test_tool_returning_audio_resource.yaml +0 -0
  19. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_mcp/test_tool_returning_audio_resource_link.yaml +0 -0
  20. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_mcp/test_tool_returning_dict.yaml +0 -0
  21. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_mcp/test_tool_returning_error.yaml +0 -0
  22. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_mcp/test_tool_returning_image.yaml +0 -0
  23. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_mcp/test_tool_returning_image_resource.yaml +0 -0
  24. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_mcp/test_tool_returning_image_resource_link.yaml +0 -0
  25. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_mcp/test_tool_returning_multiple_items.yaml +0 -0
  26. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_mcp/test_tool_returning_none.yaml +0 -0
  27. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_mcp/test_tool_returning_str.yaml +0 -0
  28. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_mcp/test_tool_returning_text_resource.yaml +0 -0
  29. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_mcp/test_tool_returning_text_resource_link.yaml +0 -0
  30. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_settings/test_stop_settings[anthropic].yaml +0 -0
  31. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_settings/test_stop_settings[bedrock].yaml +0 -0
  32. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_settings/test_stop_settings[cohere].yaml +0 -0
  33. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_settings/test_stop_settings[gemini].yaml +0 -0
  34. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_settings/test_stop_settings[google].yaml +0 -0
  35. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_settings/test_stop_settings[groq].yaml +0 -0
  36. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_settings/test_stop_settings[mistral].yaml +0 -0
  37. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_settings/test_stop_settings[openai].yaml +0 -0
  38. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_temporal/test_complex_agent_run.yaml +0 -0
  39. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_temporal/test_complex_agent_run_in_workflow.yaml +0 -0
  40. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_temporal/test_complex_agent_run_stream_in_workflow.yaml +0 -0
  41. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_temporal/test_logfire_plugin.yaml +0 -0
  42. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_temporal/test_multiple_agents.yaml +0 -0
  43. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_temporal/test_simple_agent_run_in_workflow.yaml +0 -0
  44. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_temporal/test_temporal_agent_iter.yaml +0 -0
  45. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_temporal/test_temporal_agent_override_deps_in_workflow.yaml +0 -0
  46. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_temporal/test_temporal_agent_run.yaml +0 -0
  47. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_temporal/test_temporal_agent_run_stream.yaml +0 -0
  48. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_temporal/test_temporal_agent_run_sync.yaml +0 -0
  49. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_temporal/test_temporal_agent_sync_tool_activity_disabled.yaml +0 -0
  50. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_temporal/test_temporal_agent_with_dataclass_deps_as_dict.yaml +0 -0
  51. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_temporal/test_temporal_agent_with_hitl_tool.yaml +0 -0
  52. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_temporal/test_temporal_agent_with_model_retry.yaml +0 -0
  53. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_temporal/test_temporal_agent_with_non_dict_deps.yaml +0 -0
  54. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/cassettes/test_temporal/test_temporal_agent_with_unserializable_deps_type.yaml +0 -0
  55. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/conftest.py +0 -0
  56. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/evals/__init__.py +0 -0
  57. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/evals/test_evaluator_base.py +0 -0
  58. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/evals/test_evaluator_context.py +0 -0
  59. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/evals/test_evaluator_spec.py +0 -0
  60. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/evals/test_llm_as_a_judge.py +0 -0
  61. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/evals/test_otel.py +0 -0
  62. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/evals/test_render_numbers.py +0 -0
  63. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/evals/test_reporting.py +0 -0
  64. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/evals/test_reports.py +0 -0
  65. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/evals/test_utils.py +0 -0
  66. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/evals/utils.py +0 -0
  67. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/example_modules/README.md +0 -0
  68. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/example_modules/bank_database.py +0 -0
  69. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/example_modules/fake_database.py +0 -0
  70. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/example_modules/mcp_server.py +0 -0
  71. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/example_modules/weather_service.py +0 -0
  72. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/ext/__init__.py +0 -0
  73. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/ext/test_langchain.py +0 -0
  74. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/graph/__init__.py +0 -0
  75. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/graph/test_file_persistence.py +0 -0
  76. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/graph/test_graph.py +0 -0
  77. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/graph/test_mermaid.py +0 -0
  78. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/graph/test_persistence.py +0 -0
  79. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/graph/test_state.py +0 -0
  80. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/graph/test_utils.py +0 -0
  81. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/import_examples.py +0 -0
  82. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/json_body_serializer.py +0 -0
  83. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/mcp_server.py +0 -0
  84. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/__init__.py +0 -0
  85. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_anthropic/test_anthropic_code_execution_tool.yaml +0 -0
  86. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_anthropic/test_anthropic_model_empty_message_on_history.yaml +0 -0
  87. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_anthropic/test_anthropic_model_instructions.yaml +0 -0
  88. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part.yaml +0 -0
  89. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_stream.yaml +0 -0
  90. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output.yaml +0 -0
  91. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output_multiple.yaml +0 -0
  92. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_anthropic/test_anthropic_server_tool_pass_history_to_another_provider.yaml +0 -0
  93. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_anthropic/test_anthropic_server_tool_receive_history_from_another_provider.yaml +0 -0
  94. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_anthropic/test_anthropic_text_output_function.yaml +0 -0
  95. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_anthropic/test_anthropic_tool_output.yaml +0 -0
  96. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_anthropic/test_anthropic_tool_with_thinking.yaml +0 -0
  97. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_anthropic/test_anthropic_web_search_tool.yaml +0 -0
  98. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_anthropic/test_anthropic_web_search_tool_stream.yaml +0 -0
  99. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_anthropic/test_document_binary_content_input.yaml +0 -0
  100. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_anthropic/test_document_url_input.yaml +0 -0
  101. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_anthropic/test_extra_headers.yaml +0 -0
  102. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_anthropic/test_image_as_binary_content_tool_response.yaml +0 -0
  103. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_anthropic/test_image_url_input.yaml +0 -0
  104. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_anthropic/test_image_url_input_invalid_mime_type.yaml +0 -0
  105. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_anthropic/test_multiple_parallel_tool_calls.yaml +0 -0
  106. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_anthropic/test_text_document_url_input.yaml +0 -0
  107. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_bedrock/test_bedrock_anthropic_tool_with_thinking.yaml +0 -0
  108. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_bedrock/test_bedrock_empty_system_prompt.yaml +0 -0
  109. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_bedrock/test_bedrock_model.yaml +0 -0
  110. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_anthropic_model_without_tools.yaml +0 -0
  111. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_guardrail_config.yaml +0 -0
  112. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_instructions.yaml +0 -0
  113. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_iter_stream.yaml +0 -0
  114. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_max_tokens.yaml +0 -0
  115. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_other_parameters.yaml +0 -0
  116. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_performance_config.yaml +0 -0
  117. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_retry.yaml +0 -0
  118. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_stream.yaml +0 -0
  119. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_structured_output.yaml +0 -0
  120. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part.yaml +0 -0
  121. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_stream.yaml +0 -0
  122. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_top_p.yaml +0 -0
  123. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_bedrock/test_bedrock_multiple_documents_in_history.yaml +0 -0
  124. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_bedrock/test_document_url_input.yaml +0 -0
  125. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_bedrock/test_image_as_binary_content_input.yaml +0 -0
  126. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_bedrock/test_image_url_input.yaml +0 -0
  127. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_bedrock/test_text_as_binary_content_input.yaml +0 -0
  128. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_bedrock/test_text_document_url_input.yaml +0 -0
  129. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_bedrock/test_video_as_binary_content_input.yaml +0 -0
  130. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_bedrock/test_video_url_input.yaml +0 -0
  131. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_cohere/test_cohere_model_instructions.yaml +0 -0
  132. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_cohere/test_cohere_model_thinking_part.yaml +0 -0
  133. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_cohere/test_request_simple_success_with_vcr.yaml +0 -0
  134. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_part.yaml +0 -0
  135. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_stream.yaml +0 -0
  136. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_download_item/test_download_item_application_octet_stream.yaml +0 -0
  137. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_download_item/test_download_item_audio_mpeg.yaml +0 -0
  138. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_download_item/test_download_item_no_content_type.yaml +0 -0
  139. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini/test_document_url_input.yaml +0 -0
  140. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_false.yaml +0 -0
  141. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_true.yaml +0 -0
  142. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini/test_gemini_drop_exclusive_maximum.yaml +0 -0
  143. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini/test_gemini_exclusive_minimum_and_maximum.yaml +0 -0
  144. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini/test_gemini_model_instructions.yaml +0 -0
  145. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini/test_gemini_model_thinking_part.yaml +0 -0
  146. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini/test_gemini_native_output.yaml +0 -0
  147. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini/test_gemini_native_output_multiple.yaml +0 -0
  148. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini/test_gemini_prompted_output.yaml +0 -0
  149. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_multiple.yaml +0 -0
  150. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_with_tools.yaml +0 -0
  151. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini/test_gemini_text_output_function.yaml +0 -0
  152. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini/test_gemini_tool_config_any_with_tool_without_args.yaml +0 -0
  153. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini/test_gemini_tool_output.yaml +0 -0
  154. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini/test_gemini_youtube_video_url_input.yaml +0 -0
  155. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini/test_image_as_binary_content_input.yaml +0 -0
  156. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini/test_image_as_binary_content_tool_response.yaml +0 -0
  157. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini/test_image_url_input.yaml +0 -0
  158. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini/test_labels_are_ignored_with_gla_provider.yaml +0 -0
  159. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini/test_video_as_binary_content_input.yaml +0 -0
  160. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini/test_video_url_input.yaml +0 -0
  161. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini_vertex/test_labels.yaml +0 -0
  162. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl (gs)].yaml +0 -0
  163. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl].yaml +0 -0
  164. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl (gs)].yaml +0 -0
  165. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl].yaml +0 -0
  166. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl (gs)].yaml +0 -0
  167. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl].yaml +0 -0
  168. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (YouTube)].yaml +0 -0
  169. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (gs)].yaml +0 -0
  170. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl].yaml +0 -0
  171. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_gemini_vertex/test_url_input_force_download.yaml +0 -0
  172. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_builtin_tools_with_other_tools.yaml +0 -0
  173. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model.yaml +0 -0
  174. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_builtin_code_execution_stream.yaml +0 -0
  175. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_code_execution_tool.yaml +0 -0
  176. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_document_url_input.yaml +0 -0
  177. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_empty_assistant_response.yaml +0 -0
  178. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_empty_user_prompt.yaml +0 -0
  179. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_image_as_binary_content_input.yaml +0 -0
  180. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_image_url_input.yaml +0 -0
  181. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_instructions.yaml +0 -0
  182. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_iter_stream.yaml +0 -0
  183. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_max_tokens.yaml +0 -0
  184. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_multiple_documents_in_history.yaml +0 -0
  185. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_receive_web_search_history_from_another_provider.yaml +0 -0
  186. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_retry.yaml +0 -0
  187. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_safety_settings.yaml +0 -0
  188. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_server_tool_receive_history_from_another_provider.yaml +0 -0
  189. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_stream.yaml +0 -0
  190. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_structured_output.yaml +0 -0
  191. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_text_as_binary_content_input.yaml +0 -0
  192. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_text_document_url_input.yaml +0 -0
  193. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_thinking_config.yaml +0 -0
  194. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_thinking_part.yaml +0 -0
  195. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_thinking_part_iter.yaml +0 -0
  196. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_top_p.yaml +0 -0
  197. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_url_context_tool.yaml +0 -0
  198. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_usage_limit_exceeded.yaml +0 -0
  199. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_usage_limit_not_exceeded.yaml +0 -0
  200. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_vertex_labels.yaml +0 -0
  201. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_vertex_provider.yaml +0 -0
  202. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input.yaml +0 -0
  203. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input_with_vendor_metadata.yaml +0 -0
  204. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_video_url_input.yaml +0 -0
  205. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_web_search_tool.yaml +0 -0
  206. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_model_youtube_video_url_input_with_vendor_metadata.yaml +0 -0
  207. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_native_output.yaml +0 -0
  208. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_native_output_multiple.yaml +0 -0
  209. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_prompted_output.yaml +0 -0
  210. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_prompted_output_multiple.yaml +0 -0
  211. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_prompted_output_with_tools.yaml +0 -0
  212. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_text_output_function.yaml +0 -0
  213. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_timeout.yaml +0 -0
  214. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_tool_config_any_with_tool_without_args.yaml +0 -0
  215. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_tool_output.yaml +0 -0
  216. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl (gs)].yaml +0 -0
  217. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl].yaml +0 -0
  218. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl (gs)].yaml +0 -0
  219. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl].yaml +0 -0
  220. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl (gs)].yaml +0 -0
  221. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl].yaml +0 -0
  222. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (YouTube)].yaml +0 -0
  223. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (gs)].yaml +0 -0
  224. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl].yaml +0 -0
  225. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_url_input_force_download.yaml +0 -0
  226. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_google/test_google_vertexai_model_usage_limit_exceeded.yaml +0 -0
  227. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_groq/test_extra_headers.yaml +0 -0
  228. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_groq/test_groq_model_instructions.yaml +0 -0
  229. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_groq/test_groq_model_thinking_part.yaml +0 -0
  230. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_groq/test_groq_model_thinking_part_iter.yaml +0 -0
  231. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_groq/test_groq_model_web_search_tool.yaml +0 -0
  232. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_groq/test_groq_native_output.yaml +0 -0
  233. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_groq/test_groq_prompted_output.yaml +0 -0
  234. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_groq/test_image_as_binary_content_input.yaml +0 -0
  235. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_groq/test_image_as_binary_content_tool_response.yaml +0 -0
  236. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_groq/test_image_url_input.yaml +0 -0
  237. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_groq/test_tool_regular_error.yaml +0 -0
  238. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_groq/test_tool_use_failed_error.yaml +0 -0
  239. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_groq/test_tool_use_failed_error_streaming.yaml +0 -0
  240. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_huggingface/test_hf_model_instructions.yaml +0 -0
  241. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_huggingface/test_hf_model_thinking_part.yaml +0 -0
  242. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_huggingface/test_hf_model_thinking_part_iter.yaml +0 -0
  243. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_huggingface/test_image_as_binary_content_input.yaml +0 -0
  244. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_huggingface/test_image_url_input.yaml +0 -0
  245. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[Qwen-Qwen2.5-72B-Instruct].yaml +0 -0
  246. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[deepseek-ai-DeepSeek-R1-0528].yaml +0 -0
  247. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[meta-llama-Llama-3.3-70B-Instruct].yaml +0 -0
  248. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_huggingface/test_request_simple_success_with_vcr.yaml +0 -0
  249. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_huggingface/test_request_simple_usage.yaml +0 -0
  250. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_huggingface/test_simple_completion.yaml +0 -0
  251. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_huggingface/test_stream_completion.yaml +0 -0
  252. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_mistral/test_image_as_binary_content_tool_response.yaml +0 -0
  253. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_mistral/test_mistral_model_instructions.yaml +0 -0
  254. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part.yaml +0 -0
  255. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_model_names/test_known_model_names.yaml +0 -0
  256. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_audio_as_binary_content_input.yaml +0 -0
  257. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_compatible_api_with_tool_calls_without_id.yaml +0 -0
  258. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_document_as_binary_content_input.yaml +0 -0
  259. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_document_as_binary_content_input_with_tool.yaml +0 -0
  260. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_document_url_input.yaml +0 -0
  261. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_extra_headers.yaml +0 -0
  262. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_image_as_binary_content_input.yaml +0 -0
  263. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_image_as_binary_content_tool_response.yaml +0 -0
  264. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_image_url_tool_response.yaml +0 -0
  265. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_invalid_response.yaml +0 -0
  266. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4.5-preview].yaml +0 -0
  267. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4o-mini].yaml +0 -0
  268. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_max_completion_tokens[o3-mini].yaml +0 -0
  269. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_multiple_agent_tool_calls.yaml +0 -0
  270. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_openai_audio_url_input.yaml +0 -0
  271. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_openai_instructions.yaml +0 -0
  272. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_openai_instructions_with_tool_calls_keep_instructions.yaml +0 -0
  273. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_openai_model_cerebras_provider.yaml +0 -0
  274. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_openai_model_cerebras_provider_harmony.yaml +0 -0
  275. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_openai_model_cerebras_provider_qwen_3_coder.yaml +0 -0
  276. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_openai_model_settings_temperature_ignored_on_gpt_5.yaml +0 -0
  277. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_openai_model_thinking_part.yaml +0 -0
  278. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_openai_model_without_system_prompt.yaml +0 -0
  279. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_openai_native_output.yaml +0 -0
  280. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_openai_native_output_multiple.yaml +0 -0
  281. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[developer].yaml +0 -0
  282. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[system].yaml +0 -0
  283. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_openai_prompted_output.yaml +0 -0
  284. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_openai_prompted_output_multiple.yaml +0 -0
  285. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_openai_text_output_function.yaml +0 -0
  286. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_openai_tool_output.yaml +0 -0
  287. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_openai_web_search_tool.yaml +0 -0
  288. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_openai_web_search_tool_model_not_supported.yaml +0 -0
  289. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_openai_web_search_tool_with_user_location.yaml +0 -0
  290. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_reasoning_model_with_temperature.yaml +0 -0
  291. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_system_prompt_role_o1_mini.yaml +0 -0
  292. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_text_response.yaml +0 -0
  293. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_user_id.yaml +0 -0
  294. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai/test_valid_response.yaml +0 -0
  295. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_audio_as_binary_content_input.yaml +0 -0
  296. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_input.yaml +0 -0
  297. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_tool_response.yaml +0 -0
  298. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_native_output.yaml +0 -0
  299. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_native_output_multiple.yaml +0 -0
  300. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_code_execution_tool.yaml +0 -0
  301. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_code_execution_tool_stream.yaml +0 -0
  302. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_as_binary_content_input.yaml +0 -0
  303. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_url_input.yaml +0 -0
  304. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_url_input.yaml +0 -0
  305. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools.yaml +0 -0
  306. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_http_error.yaml +0 -0
  307. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_instructions.yaml +0 -0
  308. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_retry.yaml +0 -0
  309. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response.yaml +0 -0
  310. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response_with_tool_call.yaml +0 -0
  311. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_thinking_part.yaml +0 -0
  312. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool.yaml +0 -0
  313. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_stream.yaml +0 -0
  314. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_with_invalid_region.yaml +0 -0
  315. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_with_user_location.yaml +0 -0
  316. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_output_type.yaml +0 -0
  317. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_effort.yaml +0 -0
  318. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_generate_summary.yaml +0 -0
  319. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_stream.yaml +0 -0
  320. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_system_prompt.yaml +0 -0
  321. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_text_document_url_input.yaml +0 -0
  322. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_part_iter.yaml +0 -0
  323. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_verbosity.yaml +0 -0
  324. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_prompted_output.yaml +0 -0
  325. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_prompted_output_multiple.yaml +0 -0
  326. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_reasoning_model_with_temperature.yaml +0 -0
  327. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_text_output_function.yaml +0 -0
  328. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/cassettes/test_openai_responses/test_tool_output.yaml +0 -0
  329. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/mock_async_stream.py +0 -0
  330. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/mock_openai.py +0 -0
  331. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/test_anthropic.py +0 -0
  332. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/test_bedrock.py +0 -0
  333. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/test_cohere.py +0 -0
  334. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/test_deepseek.py +0 -0
  335. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/test_download_item.py +0 -0
  336. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/test_fallback.py +0 -0
  337. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/test_gemini.py +0 -0
  338. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/test_gemini_vertex.py +0 -0
  339. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/test_google.py +0 -0
  340. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/test_groq.py +0 -0
  341. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/test_huggingface.py +0 -0
  342. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/test_instrumented.py +0 -0
  343. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/test_mcp_sampling.py +0 -0
  344. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/test_mistral.py +0 -0
  345. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/test_model.py +0 -0
  346. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/test_model_function.py +0 -0
  347. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/test_model_names.py +0 -0
  348. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/test_model_request_parameters.py +0 -0
  349. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/test_model_settings.py +0 -0
  350. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/test_model_test.py +0 -0
  351. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/test_openai.py +0 -0
  352. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/models/test_openai_responses.py +0 -0
  353. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/parts_from_messages.py +0 -0
  354. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/providers/__init__.py +0 -0
  355. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/providers/cassettes/test_azure/test_azure_provider_call.yaml +0 -0
  356. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/providers/cassettes/test_google_vertex/test_vertexai_provider.yaml +0 -0
  357. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/providers/cassettes/test_heroku/test_heroku_model_provider_claude_3_7_sonnet.yaml +0 -0
  358. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/providers/cassettes/test_openrouter/test_openrouter_with_google_model.yaml +0 -0
  359. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/providers/test_anthropic.py +0 -0
  360. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/providers/test_azure.py +0 -0
  361. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/providers/test_bedrock.py +0 -0
  362. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/providers/test_cerebras.py +0 -0
  363. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/providers/test_cohere.py +0 -0
  364. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/providers/test_deepseek.py +0 -0
  365. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/providers/test_fireworks.py +0 -0
  366. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/providers/test_github.py +0 -0
  367. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/providers/test_google_gla.py +0 -0
  368. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/providers/test_google_vertex.py +0 -0
  369. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/providers/test_grok.py +0 -0
  370. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/providers/test_groq.py +0 -0
  371. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/providers/test_heroku.py +0 -0
  372. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/providers/test_huggingface.py +0 -0
  373. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/providers/test_litellm.py +0 -0
  374. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/providers/test_mistral.py +0 -0
  375. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/providers/test_moonshotai.py +0 -0
  376. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/providers/test_ollama.py +0 -0
  377. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/providers/test_openai.py +0 -0
  378. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/providers/test_openrouter.py +0 -0
  379. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/providers/test_provider_names.py +0 -0
  380. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/providers/test_together.py +0 -0
  381. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/providers/test_vercel.py +0 -0
  382. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/test_a2a.py +0 -0
  383. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/test_ag_ui.py +0 -0
  384. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/test_agent.py +0 -0
  385. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/test_builtin_tools.py +0 -0
  386. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/test_cli.py +0 -0
  387. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/test_deps.py +0 -0
  388. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/test_direct.py +0 -0
  389. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/test_examples.py +0 -0
  390. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/test_format_as_xml.py +0 -0
  391. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/test_history_processor.py +0 -0
  392. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/test_json_body_serializer.py +0 -0
  393. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/test_live.py +0 -0
  394. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/test_logfire.py +0 -0
  395. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/test_mcp.py +0 -0
  396. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/test_messages.py +0 -0
  397. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/test_parts_manager.py +0 -0
  398. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/test_settings.py +0 -0
  399. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/test_streaming.py +0 -0
  400. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/test_temporal.py +0 -0
  401. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/test_tenacity.py +0 -0
  402. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/test_thinking_part.py +0 -0
  403. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/test_tools.py +0 -0
  404. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/test_toolsets.py +0 -0
  405. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/test_usage_limits.py +0 -0
  406. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/test_utils.py +0 -0
  407. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/typed_agent.py +0 -0
  408. {pydantic_ai-1.0.0 → pydantic_ai-1.0.1}/tests/typed_graph.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pydantic-ai
3
- Version: 1.0.0
3
+ Version: 1.0.1
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
@@ -27,11 +27,11 @@ Classifier: Topic :: Internet
27
27
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
28
28
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
29
29
  Requires-Python: >=3.10
30
- Requires-Dist: pydantic-ai-slim[ag-ui,anthropic,bedrock,cli,cohere,evals,google,groq,huggingface,logfire,mcp,mistral,openai,retries,temporal,vertexai]==1.0.0
30
+ Requires-Dist: pydantic-ai-slim[ag-ui,anthropic,bedrock,cli,cohere,evals,google,groq,huggingface,logfire,mcp,mistral,openai,retries,temporal,vertexai]==1.0.1
31
31
  Provides-Extra: a2a
32
32
  Requires-Dist: fasta2a>=0.4.1; extra == 'a2a'
33
33
  Provides-Extra: examples
34
- Requires-Dist: pydantic-ai-examples==1.0.0; extra == 'examples'
34
+ Requires-Dist: pydantic-ai-examples==1.0.1; extra == 'examples'
35
35
  Description-Content-Type: text/markdown
36
36
 
37
37
  <div align="center">
@@ -2,7 +2,7 @@ from __future__ import annotations as _annotations
2
2
 
3
3
  import json
4
4
  import sys
5
- from dataclasses import dataclass
5
+ from dataclasses import dataclass, field
6
6
  from pathlib import Path
7
7
  from typing import Any
8
8
 
@@ -27,7 +27,6 @@ with try_import() as imports_successful:
27
27
  EvaluatorOutput,
28
28
  EvaluatorSpec,
29
29
  LLMJudge,
30
- Python,
31
30
  )
32
31
  from pydantic_evals.evaluators.context import EvaluatorContext
33
32
  from pydantic_evals.reporting import EvaluationReport, ReportCase, ReportCaseAdapter, ReportCaseFailure
@@ -41,6 +40,15 @@ with try_import() as imports_successful:
41
40
  def evaluate(self, ctx: EvaluatorContext[object, object, object]) -> EvaluatorOutput:
42
41
  return self.output
43
42
 
43
+ @dataclass(repr=False)
44
+ class Python(Evaluator[object, object, object]):
45
+ expression: str
46
+ evaluation_name: str | None = field(default=None)
47
+
48
+ def evaluate(self, ctx: EvaluatorContext[object, object, object]) -> EvaluatorOutput:
49
+ # Evaluate the condition, exposing access to the evaluator context as `ctx`.
50
+ return eval(self.expression, {'ctx': ctx})
51
+
44
52
 
45
53
  with try_import() as tenacity_import_successful:
46
54
  from tenacity import stop_after_attempt
@@ -135,6 +143,7 @@ async def test_add_evaluator(
135
143
  simple_evaluator: type[Evaluator[TaskInput, TaskOutput, TaskMetadata]],
136
144
  ):
137
145
  """Test adding evaluators to a dataset."""
146
+
138
147
  assert len(example_dataset.evaluators) == 0
139
148
 
140
149
  example_dataset.add_evaluator(simple_evaluator())
@@ -18,7 +18,6 @@ with try_import() as imports_successful:
18
18
 
19
19
  from pydantic_evals.evaluators import EvaluationReason, EvaluatorContext
20
20
  from pydantic_evals.evaluators.common import (
21
- DEFAULT_EVALUATORS,
22
21
  Contains,
23
22
  Equals,
24
23
  EqualsExpected,
@@ -27,7 +26,6 @@ with try_import() as imports_successful:
27
26
  LLMJudge,
28
27
  MaxDuration,
29
28
  OutputConfig,
30
- Python,
31
29
  )
32
30
  from pydantic_evals.otel._context_in_memory_span_exporter import context_subtree
33
31
  from pydantic_evals.otel._errors import SpanTreeRecordingError
@@ -395,68 +393,6 @@ async def test_llm_judge_evaluator_with_model_settings(mocker: MockerFixture):
395
393
  )
396
394
 
397
395
 
398
- async def test_python():
399
- """Test Python evaluator."""
400
- evaluator = Python(expression='ctx.output > 0')
401
-
402
- # Test with valid expression
403
- assert evaluator.evaluate(MockContext(output=42)) is True
404
- assert evaluator.evaluate(MockContext(output=-1)) is False
405
-
406
- # Test with invalid expression
407
- evaluator_invalid = Python(expression='invalid syntax')
408
- with pytest.raises(SyntaxError):
409
- evaluator_invalid.evaluate(MockContext(output=42))
410
-
411
-
412
- async def test_python_evaluator():
413
- """Test Python evaluator."""
414
- ctx = EvaluatorContext(
415
- name='test',
416
- inputs={'x': 42},
417
- metadata=None,
418
- expected_output=None,
419
- output={'y': 84},
420
- duration=0.0,
421
- _span_tree=SpanTreeRecordingError('did not record spans'),
422
- attributes={},
423
- metrics={},
424
- )
425
-
426
- # Test simple expression
427
- evaluator = Python(expression='ctx.output["y"] == 84')
428
- assert evaluator.evaluate(ctx) is True
429
-
430
- # Test accessing inputs
431
- evaluator = Python(expression='ctx.inputs["x"] * 2 == ctx.output["y"]')
432
- assert evaluator.evaluate(ctx) is True
433
-
434
- # Test complex expression
435
- evaluator = Python(expression='all(k in ctx.output for k in ["y"])')
436
- assert evaluator.evaluate(ctx) is True
437
-
438
- # Test invalid expression
439
- evaluator = Python(expression='invalid syntax')
440
- with pytest.raises(SyntaxError):
441
- evaluator.evaluate(ctx)
442
-
443
- # Test expression with undefined variables
444
- evaluator = Python(expression='undefined_var')
445
- with pytest.raises(NameError):
446
- evaluator.evaluate(ctx)
447
-
448
- # Test expression with type error
449
- evaluator = Python(expression='ctx.output + 1') # Can't add dict and int
450
- with pytest.raises(TypeError):
451
- evaluator.evaluate(ctx)
452
-
453
-
454
- def test_default_evaluators():
455
- """Test DEFAULT_EVALUATORS tuple."""
456
- # Verify that Python evaluator is not included for security reasons
457
- assert Python not in DEFAULT_EVALUATORS
458
-
459
-
460
396
  async def test_span_query_evaluator(capfire: CaptureLogfire):
461
397
  """Test HasMatchingSpan evaluator."""
462
398
  # Create a span tree with a known structure
@@ -27,7 +27,6 @@ with try_import() as imports_successful:
27
27
  IsInstance,
28
28
  LLMJudge,
29
29
  MaxDuration,
30
- Python,
31
30
  )
32
31
  from pydantic_evals.evaluators.context import EvaluatorContext
33
32
  from pydantic_evals.evaluators.evaluator import (
@@ -579,34 +578,43 @@ async def test_span_query_evaluator(
579
578
  assert result is False
580
579
 
581
580
 
582
- async def test_python_evaluator(test_context: EvaluatorContext[TaskInput, TaskOutput, TaskMetadata]):
583
- """Test the python evaluator."""
584
- # Test with a simple condition
585
- evaluator = Python(expression="ctx.output.answer == '4'")
586
- assert evaluator.evaluate(test_context) == snapshot(True)
587
-
588
- # Test type sensitivity
589
- evaluator = Python(expression='ctx.output.answer == 4')
590
- assert evaluator.evaluate(test_context) == snapshot(False)
591
-
592
- # Test with a named condition
593
- evaluator = Python(expression="{'correct_answer': ctx.output.answer == '4'}")
594
- assert evaluator.evaluate(test_context) == snapshot({'correct_answer': True})
595
-
596
- # Test with a condition that returns false
597
- evaluator = Python(expression="ctx.output.answer == '5'")
598
- assert evaluator.evaluate(test_context) == snapshot(False)
599
-
600
- # Test with a condition that accesses context properties
601
- evaluator = Python(expression="ctx.output.answer == '4' and ctx.metadata.difficulty == 'easy'")
602
- assert evaluator.evaluate(test_context) == snapshot(True)
603
-
604
- # Test reason rendering for strings
605
- evaluator = Python(expression='ctx.output.answer')
606
- assert evaluator.evaluate(test_context) == snapshot('4')
607
-
608
- # Test with a condition that returns a dict
609
- evaluator = Python(
610
- expression="{'is_correct': ctx.output.answer == '4', 'is_easy': ctx.metadata.difficulty == 'easy'}"
611
- )
612
- assert evaluator.evaluate(test_context) == snapshot({'is_correct': True, 'is_easy': True})
581
+ async def test_import_errors():
582
+ with pytest.raises(
583
+ ImportError,
584
+ match='The `Python` evaluator has been removed for security reasons. See https://github.com/pydantic/pydantic-ai/pull/2808 for more details and a workaround.',
585
+ ):
586
+ from pydantic_evals.evaluators import Python # pyright: ignore[reportUnusedImport]
587
+
588
+ with pytest.raises(
589
+ ImportError,
590
+ match='The `Python` evaluator has been removed for security reasons. See https://github.com/pydantic/pydantic-ai/pull/2808 for more details and a workaround.',
591
+ ):
592
+ from pydantic_evals.evaluators.common import Python # pyright: ignore[reportUnusedImport] # noqa: F401
593
+
594
+ with pytest.raises(
595
+ ImportError,
596
+ match="cannot import name 'Foo' from 'pydantic_evals.evaluators'",
597
+ ):
598
+ from pydantic_evals.evaluators import Foo # pyright: ignore[reportUnusedImport]
599
+
600
+ with pytest.raises(
601
+ ImportError,
602
+ match="cannot import name 'Foo' from 'pydantic_evals.evaluators.common'",
603
+ ):
604
+ from pydantic_evals.evaluators.common import Foo # pyright: ignore[reportUnusedImport] # noqa: F401
605
+
606
+ with pytest.raises(
607
+ AttributeError,
608
+ match="module 'pydantic_evals.evaluators' has no attribute 'Foo'",
609
+ ):
610
+ import pydantic_evals.evaluators as _evaluators
611
+
612
+ _evaluators.Foo
613
+
614
+ with pytest.raises(
615
+ AttributeError,
616
+ match="module 'pydantic_evals.evaluators.common' has no attribute 'Foo'",
617
+ ):
618
+ import pydantic_evals.evaluators.common as _common
619
+
620
+ _common.Foo
File without changes
File without changes
File without changes
File without changes
File without changes