pydantic-ai 0.4.2__tar.gz → 0.4.3__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 (330) hide show
  1. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/PKG-INFO +3 -3
  2. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/pyproject.toml +16 -1
  3. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/conftest.py +14 -0
  4. pydantic_ai-0.4.3/tests/models/cassettes/test_huggingface/test_hf_model_instructions.yaml +121 -0
  5. pydantic_ai-0.4.3/tests/models/cassettes/test_huggingface/test_hf_model_thinking_part.yaml +291 -0
  6. pydantic_ai-0.4.3/tests/models/cassettes/test_huggingface/test_image_as_binary_content_input.yaml +106 -0
  7. pydantic_ai-0.4.3/tests/models/cassettes/test_huggingface/test_image_url_input.yaml +105 -0
  8. pydantic_ai-0.4.3/tests/models/cassettes/test_huggingface/test_max_completion_tokens[Qwen-Qwen2.5-72B-Instruct].yaml +122 -0
  9. pydantic_ai-0.4.3/tests/models/cassettes/test_huggingface/test_max_completion_tokens[deepseek-ai-DeepSeek-R1-0528].yaml +128 -0
  10. pydantic_ai-0.4.3/tests/models/cassettes/test_huggingface/test_max_completion_tokens[meta-llama-Llama-3.3-70B-Instruct].yaml +142 -0
  11. pydantic_ai-0.4.3/tests/models/cassettes/test_huggingface/test_request_simple_success_with_vcr.yaml +126 -0
  12. pydantic_ai-0.4.3/tests/models/cassettes/test_huggingface/test_request_simple_usage.yaml +122 -0
  13. pydantic_ai-0.4.3/tests/models/cassettes/test_huggingface/test_simple_completion.yaml +122 -0
  14. pydantic_ai-0.4.3/tests/models/cassettes/test_huggingface/test_stream_completion.yaml +319 -0
  15. pydantic_ai-0.4.3/tests/models/test_huggingface.py +999 -0
  16. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/test_instrumented.py +8 -1
  17. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/test_model_names.py +3 -0
  18. pydantic_ai-0.4.3/tests/providers/test_huggingface.py +142 -0
  19. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/test_agent.py +41 -0
  20. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/test_cli.py +1 -0
  21. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/test_direct.py +1 -1
  22. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/test_examples.py +4 -1
  23. pydantic_ai-0.4.3/tests/test_logfire.py +1423 -0
  24. pydantic_ai-0.4.2/tests/test_logfire.py +0 -599
  25. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/.gitignore +0 -0
  26. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/LICENSE +0 -0
  27. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/Makefile +0 -0
  28. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/README.md +0 -0
  29. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/__init__.py +0 -0
  30. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/assets/dummy.pdf +0 -0
  31. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/assets/kiwi.png +0 -0
  32. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/assets/marcelo.mp3 +0 -0
  33. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/assets/small_video.mp4 +0 -0
  34. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/cassettes/test_mcp/test_agent_with_stdio_server.yaml +0 -0
  35. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/cassettes/test_mcp/test_tool_returning_audio_resource.yaml +0 -0
  36. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/cassettes/test_mcp/test_tool_returning_dict.yaml +0 -0
  37. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/cassettes/test_mcp/test_tool_returning_error.yaml +0 -0
  38. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/cassettes/test_mcp/test_tool_returning_image.yaml +0 -0
  39. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/cassettes/test_mcp/test_tool_returning_image_resource.yaml +0 -0
  40. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/cassettes/test_mcp/test_tool_returning_multiple_items.yaml +0 -0
  41. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/cassettes/test_mcp/test_tool_returning_none.yaml +0 -0
  42. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/cassettes/test_mcp/test_tool_returning_str.yaml +0 -0
  43. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/cassettes/test_mcp/test_tool_returning_text_resource.yaml +0 -0
  44. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/cassettes/test_settings/test_stop_settings[anthropic].yaml +0 -0
  45. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/cassettes/test_settings/test_stop_settings[bedrock].yaml +0 -0
  46. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/cassettes/test_settings/test_stop_settings[cohere].yaml +0 -0
  47. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/cassettes/test_settings/test_stop_settings[gemini].yaml +0 -0
  48. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/cassettes/test_settings/test_stop_settings[google].yaml +0 -0
  49. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/cassettes/test_settings/test_stop_settings[groq].yaml +0 -0
  50. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/cassettes/test_settings/test_stop_settings[mistral].yaml +0 -0
  51. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/cassettes/test_settings/test_stop_settings[openai].yaml +0 -0
  52. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/evals/__init__.py +0 -0
  53. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/evals/test_dataset.py +0 -0
  54. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/evals/test_evaluator_base.py +0 -0
  55. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/evals/test_evaluator_common.py +0 -0
  56. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/evals/test_evaluator_context.py +0 -0
  57. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/evals/test_evaluator_spec.py +0 -0
  58. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/evals/test_evaluators.py +0 -0
  59. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/evals/test_llm_as_a_judge.py +0 -0
  60. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/evals/test_otel.py +0 -0
  61. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/evals/test_render_numbers.py +0 -0
  62. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/evals/test_reporting.py +0 -0
  63. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/evals/test_reports.py +0 -0
  64. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/evals/test_utils.py +0 -0
  65. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/evals/utils.py +0 -0
  66. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/example_modules/README.md +0 -0
  67. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/example_modules/bank_database.py +0 -0
  68. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/example_modules/fake_database.py +0 -0
  69. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/example_modules/mcp_server.py +0 -0
  70. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/example_modules/weather_service.py +0 -0
  71. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/ext/__init__.py +0 -0
  72. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/ext/test_langchain.py +0 -0
  73. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/graph/__init__.py +0 -0
  74. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/graph/test_file_persistence.py +0 -0
  75. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/graph/test_graph.py +0 -0
  76. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/graph/test_mermaid.py +0 -0
  77. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/graph/test_persistence.py +0 -0
  78. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/graph/test_state.py +0 -0
  79. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/graph/test_utils.py +0 -0
  80. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/import_examples.py +0 -0
  81. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/json_body_serializer.py +0 -0
  82. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/mcp_server.py +0 -0
  83. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/__init__.py +0 -0
  84. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_anthropic/test_anthropic_model_empty_message_on_history.yaml +0 -0
  85. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_anthropic/test_anthropic_model_instructions.yaml +0 -0
  86. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part.yaml +0 -0
  87. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_stream.yaml +0 -0
  88. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output.yaml +0 -0
  89. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output_multiple.yaml +0 -0
  90. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_anthropic/test_anthropic_text_output_function.yaml +0 -0
  91. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_anthropic/test_anthropic_tool_output.yaml +0 -0
  92. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_anthropic/test_anthropic_tool_with_thinking.yaml +0 -0
  93. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_anthropic/test_document_binary_content_input.yaml +0 -0
  94. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_anthropic/test_document_url_input.yaml +0 -0
  95. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_anthropic/test_extra_headers.yaml +0 -0
  96. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_anthropic/test_image_as_binary_content_tool_response.yaml +0 -0
  97. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_anthropic/test_image_url_input.yaml +0 -0
  98. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_anthropic/test_image_url_input_invalid_mime_type.yaml +0 -0
  99. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_anthropic/test_multiple_parallel_tool_calls.yaml +0 -0
  100. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_anthropic/test_text_document_url_input.yaml +0 -0
  101. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_bedrock/test_bedrock_empty_system_prompt.yaml +0 -0
  102. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_bedrock/test_bedrock_model.yaml +0 -0
  103. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_bedrock/test_bedrock_model_anthropic_model_without_tools.yaml +0 -0
  104. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_bedrock/test_bedrock_model_guardrail_config.yaml +0 -0
  105. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_bedrock/test_bedrock_model_instructions.yaml +0 -0
  106. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_bedrock/test_bedrock_model_iter_stream.yaml +0 -0
  107. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_bedrock/test_bedrock_model_max_tokens.yaml +0 -0
  108. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_bedrock/test_bedrock_model_other_parameters.yaml +0 -0
  109. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_bedrock/test_bedrock_model_performance_config.yaml +0 -0
  110. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_bedrock/test_bedrock_model_retry.yaml +0 -0
  111. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_bedrock/test_bedrock_model_stream.yaml +0 -0
  112. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_bedrock/test_bedrock_model_structured_output.yaml +0 -0
  113. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part.yaml +0 -0
  114. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_stream.yaml +0 -0
  115. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_bedrock/test_bedrock_model_top_p.yaml +0 -0
  116. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_bedrock/test_bedrock_multiple_documents_in_history.yaml +0 -0
  117. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_bedrock/test_document_url_input.yaml +0 -0
  118. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_bedrock/test_image_as_binary_content_input.yaml +0 -0
  119. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_bedrock/test_image_url_input.yaml +0 -0
  120. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_bedrock/test_text_as_binary_content_input.yaml +0 -0
  121. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_bedrock/test_text_document_url_input.yaml +0 -0
  122. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_bedrock/test_video_as_binary_content_input.yaml +0 -0
  123. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_bedrock/test_video_url_input.yaml +0 -0
  124. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_cohere/test_cohere_model_instructions.yaml +0 -0
  125. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_cohere/test_cohere_model_thinking_part.yaml +0 -0
  126. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_cohere/test_request_simple_success_with_vcr.yaml +0 -0
  127. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_part.yaml +0 -0
  128. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_stream.yaml +0 -0
  129. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_download_item/test_download_item_application_octet_stream.yaml +0 -0
  130. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_download_item/test_download_item_no_content_type.yaml +0 -0
  131. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini/test_document_url_input.yaml +0 -0
  132. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_false.yaml +0 -0
  133. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_true.yaml +0 -0
  134. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini/test_gemini_drop_exclusive_maximum.yaml +0 -0
  135. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini/test_gemini_exclusive_minimum_and_maximum.yaml +0 -0
  136. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini/test_gemini_model_instructions.yaml +0 -0
  137. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini/test_gemini_model_thinking_part.yaml +0 -0
  138. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini/test_gemini_native_output.yaml +0 -0
  139. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini/test_gemini_native_output_multiple.yaml +0 -0
  140. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini/test_gemini_prompted_output.yaml +0 -0
  141. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_multiple.yaml +0 -0
  142. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_with_tools.yaml +0 -0
  143. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini/test_gemini_text_output_function.yaml +0 -0
  144. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini/test_gemini_tool_config_any_with_tool_without_args.yaml +0 -0
  145. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini/test_gemini_tool_output.yaml +0 -0
  146. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini/test_gemini_youtube_video_url_input.yaml +0 -0
  147. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini/test_image_as_binary_content_input.yaml +0 -0
  148. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini/test_image_as_binary_content_tool_response.yaml +0 -0
  149. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini/test_image_url_input.yaml +0 -0
  150. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini/test_labels_are_ignored_with_gla_provider.yaml +0 -0
  151. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini/test_video_as_binary_content_input.yaml +0 -0
  152. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini/test_video_url_input.yaml +0 -0
  153. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini_vertex/test_labels.yaml +0 -0
  154. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl (gs)].yaml +0 -0
  155. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl].yaml +0 -0
  156. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl (gs)].yaml +0 -0
  157. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl].yaml +0 -0
  158. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl (gs)].yaml +0 -0
  159. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl].yaml +0 -0
  160. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (YouTube)].yaml +0 -0
  161. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (gs)].yaml +0 -0
  162. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl].yaml +0 -0
  163. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_gemini_vertex/test_url_input_force_download.yaml +0 -0
  164. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_model.yaml +0 -0
  165. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_model_document_url_input.yaml +0 -0
  166. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_model_empty_user_prompt.yaml +0 -0
  167. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_model_image_as_binary_content_input.yaml +0 -0
  168. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_model_image_url_input.yaml +0 -0
  169. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_model_instructions.yaml +0 -0
  170. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_model_iter_stream.yaml +0 -0
  171. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_model_max_tokens.yaml +0 -0
  172. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_model_multiple_documents_in_history.yaml +0 -0
  173. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_model_retry.yaml +0 -0
  174. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_model_safety_settings.yaml +0 -0
  175. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_model_stream.yaml +0 -0
  176. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_model_structured_output.yaml +0 -0
  177. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_model_text_as_binary_content_input.yaml +0 -0
  178. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_model_text_document_url_input.yaml +0 -0
  179. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_model_thinking_config.yaml +0 -0
  180. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_model_thinking_part.yaml +0 -0
  181. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_model_thinking_part_iter.yaml +0 -0
  182. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_model_top_p.yaml +0 -0
  183. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_model_vertex_labels.yaml +0 -0
  184. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_model_vertex_provider.yaml +0 -0
  185. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input.yaml +0 -0
  186. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input_with_vendor_metadata.yaml +0 -0
  187. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_model_video_url_input.yaml +0 -0
  188. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_model_youtube_video_url_input_with_vendor_metadata.yaml +0 -0
  189. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_native_output.yaml +0 -0
  190. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_native_output_multiple.yaml +0 -0
  191. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_prompted_output.yaml +0 -0
  192. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_prompted_output_multiple.yaml +0 -0
  193. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_prompted_output_with_tools.yaml +0 -0
  194. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_text_output_function.yaml +0 -0
  195. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_timeout.yaml +0 -0
  196. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_tool_config_any_with_tool_without_args.yaml +0 -0
  197. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_tool_output.yaml +0 -0
  198. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl (gs)].yaml +0 -0
  199. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl].yaml +0 -0
  200. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl (gs)].yaml +0 -0
  201. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl].yaml +0 -0
  202. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl (gs)].yaml +0 -0
  203. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl].yaml +0 -0
  204. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (YouTube)].yaml +0 -0
  205. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (gs)].yaml +0 -0
  206. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl].yaml +0 -0
  207. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_google/test_google_url_input_force_download.yaml +0 -0
  208. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_groq/test_extra_headers.yaml +0 -0
  209. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_groq/test_groq_model_instructions.yaml +0 -0
  210. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_groq/test_groq_model_thinking_part.yaml +0 -0
  211. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_groq/test_image_as_binary_content_input.yaml +0 -0
  212. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_groq/test_image_as_binary_content_tool_response.yaml +0 -0
  213. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_groq/test_image_url_input.yaml +0 -0
  214. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_mistral/test_image_as_binary_content_tool_response.yaml +0 -0
  215. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_mistral/test_mistral_model_instructions.yaml +0 -0
  216. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part.yaml +0 -0
  217. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_model_names/test_known_model_names.yaml +0 -0
  218. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai/test_audio_as_binary_content_input.yaml +0 -0
  219. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai/test_compatible_api_with_tool_calls_without_id.yaml +0 -0
  220. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai/test_document_as_binary_content_input.yaml +0 -0
  221. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai/test_document_url_input.yaml +0 -0
  222. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai/test_extra_headers.yaml +0 -0
  223. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai/test_image_as_binary_content_input.yaml +0 -0
  224. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai/test_image_as_binary_content_tool_response.yaml +0 -0
  225. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai/test_image_url_tool_response.yaml +0 -0
  226. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4.5-preview].yaml +0 -0
  227. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4o-mini].yaml +0 -0
  228. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai/test_max_completion_tokens[o3-mini].yaml +0 -0
  229. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai/test_multiple_agent_tool_calls.yaml +0 -0
  230. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai/test_openai_audio_url_input.yaml +0 -0
  231. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai/test_openai_instructions.yaml +0 -0
  232. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai/test_openai_instructions_with_tool_calls_keep_instructions.yaml +0 -0
  233. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai/test_openai_model_thinking_part.yaml +0 -0
  234. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai/test_openai_model_thinking_part_iter.yaml +0 -0
  235. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai/test_openai_model_without_system_prompt.yaml +0 -0
  236. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai/test_openai_native_output.yaml +0 -0
  237. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai/test_openai_native_output_multiple.yaml +0 -0
  238. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[developer].yaml +0 -0
  239. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[system].yaml +0 -0
  240. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai/test_openai_prompted_output.yaml +0 -0
  241. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai/test_openai_prompted_output_multiple.yaml +0 -0
  242. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai/test_openai_responses_model_thinking_part.yaml +0 -0
  243. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai/test_openai_text_output_function.yaml +0 -0
  244. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai/test_openai_tool_output.yaml +0 -0
  245. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai/test_reasoning_model_with_temperature.yaml +0 -0
  246. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai/test_user_id.yaml +0 -0
  247. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai_responses/test_audio_as_binary_content_input.yaml +0 -0
  248. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_input.yaml +0 -0
  249. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_tool_response.yaml +0 -0
  250. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai_responses/test_native_output.yaml +0 -0
  251. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai_responses/test_native_output_multiple.yaml +0 -0
  252. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_as_binary_content_input.yaml +0 -0
  253. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_url_input.yaml +0 -0
  254. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_url_input.yaml +0 -0
  255. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools.yaml +0 -0
  256. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_http_error.yaml +0 -0
  257. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_instructions.yaml +0 -0
  258. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_retry.yaml +0 -0
  259. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response.yaml +0 -0
  260. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response_with_tool_call.yaml +0 -0
  261. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai_responses/test_openai_responses_output_type.yaml +0 -0
  262. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_effort.yaml +0 -0
  263. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_generate_summary.yaml +0 -0
  264. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai_responses/test_openai_responses_stream.yaml +0 -0
  265. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai_responses/test_openai_responses_system_prompt.yaml +0 -0
  266. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai_responses/test_openai_responses_text_document_url_input.yaml +0 -0
  267. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai_responses/test_prompted_output.yaml +0 -0
  268. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai_responses/test_prompted_output_multiple.yaml +0 -0
  269. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai_responses/test_reasoning_model_with_temperature.yaml +0 -0
  270. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai_responses/test_text_output_function.yaml +0 -0
  271. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/cassettes/test_openai_responses/test_tool_output.yaml +0 -0
  272. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/mock_async_stream.py +0 -0
  273. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/test_anthropic.py +0 -0
  274. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/test_bedrock.py +0 -0
  275. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/test_cohere.py +0 -0
  276. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/test_deepseek.py +0 -0
  277. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/test_download_item.py +0 -0
  278. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/test_fallback.py +0 -0
  279. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/test_gemini.py +0 -0
  280. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/test_gemini_vertex.py +0 -0
  281. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/test_google.py +0 -0
  282. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/test_groq.py +0 -0
  283. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/test_mcp_sampling.py +0 -0
  284. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/test_mistral.py +0 -0
  285. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/test_model.py +0 -0
  286. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/test_model_function.py +0 -0
  287. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/test_model_request_parameters.py +0 -0
  288. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/test_model_settings.py +0 -0
  289. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/test_model_test.py +0 -0
  290. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/test_openai.py +0 -0
  291. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/models/test_openai_responses.py +0 -0
  292. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/providers/__init__.py +0 -0
  293. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/providers/cassettes/test_azure/test_azure_provider_call.yaml +0 -0
  294. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/providers/cassettes/test_google_vertex/test_vertexai_provider.yaml +0 -0
  295. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/providers/cassettes/test_heroku/test_heroku_model_provider_claude_3_7_sonnet.yaml +0 -0
  296. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/providers/cassettes/test_openrouter/test_openrouter_with_google_model.yaml +0 -0
  297. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/providers/test_anthropic.py +0 -0
  298. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/providers/test_azure.py +0 -0
  299. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/providers/test_bedrock.py +0 -0
  300. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/providers/test_cohere.py +0 -0
  301. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/providers/test_deepseek.py +0 -0
  302. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/providers/test_fireworks.py +0 -0
  303. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/providers/test_github.py +0 -0
  304. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/providers/test_google_gla.py +0 -0
  305. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/providers/test_google_vertex.py +0 -0
  306. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/providers/test_grok.py +0 -0
  307. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/providers/test_groq.py +0 -0
  308. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/providers/test_heroku.py +0 -0
  309. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/providers/test_mistral.py +0 -0
  310. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/providers/test_openai.py +0 -0
  311. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/providers/test_openrouter.py +0 -0
  312. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/providers/test_provider_names.py +0 -0
  313. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/providers/test_together.py +0 -0
  314. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/test_a2a.py +0 -0
  315. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/test_deps.py +0 -0
  316. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/test_format_as_xml.py +0 -0
  317. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/test_history_processor.py +0 -0
  318. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/test_json_body_serializer.py +0 -0
  319. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/test_live.py +0 -0
  320. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/test_mcp.py +0 -0
  321. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/test_messages.py +0 -0
  322. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/test_parts_manager.py +0 -0
  323. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/test_settings.py +0 -0
  324. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/test_streaming.py +0 -0
  325. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/test_thinking_part.py +0 -0
  326. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/test_tools.py +0 -0
  327. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/test_usage_limits.py +0 -0
  328. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/test_utils.py +0 -0
  329. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/typed_agent.py +0 -0
  330. {pydantic_ai-0.4.2 → pydantic_ai-0.4.3}/tests/typed_graph.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pydantic-ai
3
- Version: 0.4.2
3
+ Version: 0.4.3
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,11 +28,11 @@ Classifier: Topic :: Internet
28
28
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
29
29
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
30
30
  Requires-Python: >=3.9
31
- Requires-Dist: pydantic-ai-slim[anthropic,bedrock,cli,cohere,evals,google,groq,mcp,mistral,openai,vertexai]==0.4.2
31
+ Requires-Dist: pydantic-ai-slim[anthropic,bedrock,cli,cohere,evals,google,groq,huggingface,mcp,mistral,openai,vertexai]==0.4.3
32
32
  Provides-Extra: a2a
33
33
  Requires-Dist: fasta2a>=0.4.1; extra == 'a2a'
34
34
  Provides-Extra: examples
35
- Requires-Dist: pydantic-ai-examples==0.4.2; extra == 'examples'
35
+ Requires-Dist: pydantic-ai-examples==0.4.3; extra == 'examples'
36
36
  Provides-Extra: logfire
37
37
  Requires-Dist: logfire>=3.11.0; extra == 'logfire'
38
38
  Description-Content-Type: text/markdown
@@ -46,7 +46,7 @@ requires-python = ">=3.9"
46
46
 
47
47
  [tool.hatch.metadata.hooks.uv-dynamic-versioning]
48
48
  dependencies = [
49
- "pydantic-ai-slim[openai,vertexai,google,groq,anthropic,mistral,cohere,bedrock,cli,mcp,evals]=={{ version }}",
49
+ "pydantic-ai-slim[openai,vertexai,google,groq,anthropic,mistral,cohere,bedrock,huggingface,cli,mcp,evals]=={{ version }}",
50
50
  ]
51
51
 
52
52
  [tool.hatch.metadata.hooks.uv-dynamic-versioning.optional-dependencies]
@@ -64,6 +64,7 @@ Changelog = "https://github.com/pydantic/pydantic-ai/releases"
64
64
  pai = "pydantic_ai._cli:cli_exit" # TODO remove this when clai has been out for a while
65
65
 
66
66
  [tool.uv.sources]
67
+ pydantic-ai = { workspace = true }
67
68
  pydantic-ai-slim = { workspace = true }
68
69
  pydantic-evals = { workspace = true }
69
70
  pydantic-graph = { workspace = true }
@@ -224,6 +225,20 @@ omit = [
224
225
  "pydantic_ai_slim/pydantic_ai/ext/aci.py", # aci-sdk requires Python 3.10+ so cannot be added as an (optional) dependency
225
226
  ]
226
227
  branch = true
228
+ # Disable include-ignored warnings as --source is enabled automatically causing a self conflict as per:
229
+ # https://github.com/pytest-dev/pytest-cov/issues/532
230
+ # https://github.com/pytest-dev/pytest-cov/issues/369
231
+ # This prevents coverage being generated by pytest-cov which has direct editor support in VS Code,
232
+ # making it super useful to check coverage while writing tests.
233
+ disable_warnings = ["include-ignored"]
234
+
235
+ [tool.coverage.paths]
236
+ # Allow CI run assets to be downloaded an replicated locally.
237
+ source = [
238
+ ".",
239
+ "/home/runner/work/pydantic-ai/pydantic-ai",
240
+ "/System/Volumes/Data/home/runner/work/pydantic-ai/pydantic-ai"
241
+ ]
227
242
 
228
243
  # https://coverage.readthedocs.io/en/latest/config.html#report
229
244
  [tool.coverage.report]
@@ -316,6 +316,11 @@ def openrouter_api_key() -> str:
316
316
  return os.getenv('OPENROUTER_API_KEY', 'mock-api-key')
317
317
 
318
318
 
319
+ @pytest.fixture(scope='session')
320
+ def huggingface_api_key() -> str:
321
+ return os.getenv('HF_TOKEN', 'hf_token')
322
+
323
+
319
324
  @pytest.fixture(scope='session')
320
325
  def heroku_inference_key() -> str:
321
326
  return os.getenv('HEROKU_INFERENCE_KEY', 'mock-api-key')
@@ -398,6 +403,7 @@ def model(
398
403
  groq_api_key: str,
399
404
  co_api_key: str,
400
405
  gemini_api_key: str,
406
+ huggingface_api_key: str,
401
407
  bedrock_provider: BedrockProvider,
402
408
  ) -> Model: # pragma: lax no cover
403
409
  try:
@@ -440,6 +446,14 @@ def model(
440
446
  from pydantic_ai.models.bedrock import BedrockConverseModel
441
447
 
442
448
  return BedrockConverseModel('us.amazon.nova-micro-v1:0', provider=bedrock_provider)
449
+ elif request.param == 'huggingface':
450
+ from pydantic_ai.models.huggingface import HuggingFaceModel
451
+ from pydantic_ai.providers.huggingface import HuggingFaceProvider
452
+
453
+ return HuggingFaceModel(
454
+ 'Qwen/Qwen2.5-72B-Instruct',
455
+ provider=HuggingFaceProvider(provider_name='nebius', api_key=huggingface_api_key),
456
+ )
443
457
  else:
444
458
  raise ValueError(f'Unknown model: {request.param}')
445
459
  except ImportError:
@@ -0,0 +1,121 @@
1
+ interactions:
2
+ - request:
3
+ body: null
4
+ headers:
5
+ accept:
6
+ - '*/*'
7
+ accept-encoding:
8
+ - gzip, deflate
9
+ connection:
10
+ - keep-alive
11
+ method: GET
12
+ uri: https://huggingface.co/api/models/Qwen/Qwen2.5-72B-Instruct?expand=inferenceProviderMapping
13
+ response:
14
+ headers:
15
+ access-control-allow-origin:
16
+ - https://huggingface.co
17
+ access-control-expose-headers:
18
+ - X-Repo-Commit,X-Request-Id,X-Error-Code,X-Error-Message,X-Total-Count,ETag,Link,Accept-Ranges,Content-Range,X-Linked-Size,X-Linked-ETag,X-Xet-Hash
19
+ connection:
20
+ - keep-alive
21
+ content-length:
22
+ - '701'
23
+ content-type:
24
+ - application/json; charset=utf-8
25
+ cross-origin-opener-policy:
26
+ - same-origin
27
+ etag:
28
+ - W/"2bd-diYmxjldwbIbFgWNRPBqJ3SEIak"
29
+ referrer-policy:
30
+ - strict-origin-when-cross-origin
31
+ vary:
32
+ - Origin
33
+ parsed_body:
34
+ _id: 66e81cefd1b1391042d0e47e
35
+ id: Qwen/Qwen2.5-72B-Instruct
36
+ inferenceProviderMapping:
37
+ featherless-ai:
38
+ providerId: Qwen/Qwen2.5-72B-Instruct
39
+ status: live
40
+ task: conversational
41
+ fireworks-ai:
42
+ providerId: accounts/fireworks/models/qwen2p5-72b-instruct
43
+ status: live
44
+ task: conversational
45
+ hyperbolic:
46
+ providerId: Qwen/Qwen2.5-72B-Instruct
47
+ status: live
48
+ task: conversational
49
+ nebius:
50
+ providerId: Qwen/Qwen2.5-72B-Instruct-fast
51
+ status: live
52
+ task: conversational
53
+ novita:
54
+ providerId: qwen/qwen-2.5-72b-instruct
55
+ status: live
56
+ task: conversational
57
+ together:
58
+ providerId: Qwen/Qwen2.5-72B-Instruct-Turbo
59
+ status: live
60
+ task: conversational
61
+ status:
62
+ code: 200
63
+ message: OK
64
+ - request:
65
+ body: null
66
+ headers: {}
67
+ method: POST
68
+ uri: https://router.huggingface.co/nebius/v1/chat/completions
69
+ response:
70
+ headers:
71
+ access-control-allow-credentials:
72
+ - 'true'
73
+ access-control-allow-origin:
74
+ - '*'
75
+ access-control-expose-headers:
76
+ - X-Repo-Commit,X-Request-Id,X-Error-Code,X-Error-Message,X-Total-Count,ETag,Link,Accept-Ranges,Content-Range,X-Linked-Size,X-Linked-ETag,X-Xet-Hash
77
+ connection:
78
+ - keep-alive
79
+ content-length:
80
+ - '560'
81
+ content-type:
82
+ - application/json
83
+ cross-origin-opener-policy:
84
+ - same-origin
85
+ referrer-policy:
86
+ - strict-origin-when-cross-origin
87
+ strict-transport-security:
88
+ - max-age=31536000; includeSubDomains
89
+ vary:
90
+ - Origin
91
+ parsed_body:
92
+ choices:
93
+ - finish_reason: stop
94
+ index: 0
95
+ logprobs: null
96
+ message:
97
+ audio: null
98
+ content: Paris
99
+ function_call: null
100
+ reasoning_content: null
101
+ refusal: null
102
+ role: assistant
103
+ tool_calls: []
104
+ stop_reason: null
105
+ created: 1751470757
106
+ id: chatcmpl-b3936940372c481b8d886e596dc75524
107
+ model: Qwen/Qwen2.5-72B-Instruct-fast
108
+ object: chat.completion
109
+ prompt_logprobs: null
110
+ service_tier: null
111
+ system_fingerprint: null
112
+ usage:
113
+ completion_tokens: 2
114
+ completion_tokens_details: null
115
+ prompt_tokens: 26
116
+ prompt_tokens_details: null
117
+ total_tokens: 28
118
+ status:
119
+ code: 200
120
+ message: OK
121
+ version: 1
@@ -0,0 +1,291 @@
1
+ interactions:
2
+ - request:
3
+ body: null
4
+ headers:
5
+ accept:
6
+ - '*/*'
7
+ accept-encoding:
8
+ - gzip, deflate
9
+ connection:
10
+ - keep-alive
11
+ method: GET
12
+ uri: https://huggingface.co/api/models/Qwen/Qwen3-235B-A22B?expand=inferenceProviderMapping
13
+ response:
14
+ headers:
15
+ access-control-allow-origin:
16
+ - https://huggingface.co
17
+ access-control-expose-headers:
18
+ - X-Repo-Commit,X-Request-Id,X-Error-Code,X-Error-Message,X-Total-Count,ETag,Link,Accept-Ranges,Content-Range,X-Linked-Size,X-Linked-ETag,X-Xet-Hash
19
+ connection:
20
+ - keep-alive
21
+ content-length:
22
+ - '470'
23
+ content-type:
24
+ - application/json; charset=utf-8
25
+ cross-origin-opener-policy:
26
+ - same-origin
27
+ etag:
28
+ - W/"1d6-5wPQfbCXoh8XtBVekhfceCwHN4Y"
29
+ referrer-policy:
30
+ - strict-origin-when-cross-origin
31
+ vary:
32
+ - Origin
33
+ parsed_body:
34
+ _id: 680daa4ac41c05ba341b67d1
35
+ id: Qwen/Qwen3-235B-A22B
36
+ inferenceProviderMapping:
37
+ fireworks-ai:
38
+ providerId: accounts/fireworks/models/qwen3-235b-a22b
39
+ status: live
40
+ task: conversational
41
+ nebius:
42
+ providerId: Qwen/Qwen3-235B-A22B
43
+ status: live
44
+ task: conversational
45
+ novita:
46
+ providerId: qwen/qwen3-235b-a22b-fp8
47
+ status: live
48
+ task: conversational
49
+ nscale:
50
+ providerId: Qwen/Qwen3-235B-A22B
51
+ status: live
52
+ task: conversational
53
+ status:
54
+ code: 200
55
+ message: OK
56
+ - request:
57
+ body: null
58
+ headers: {}
59
+ method: POST
60
+ uri: https://router.huggingface.co/nebius/v1/chat/completions
61
+ response:
62
+ headers:
63
+ access-control-allow-credentials:
64
+ - 'true'
65
+ access-control-allow-origin:
66
+ - '*'
67
+ access-control-expose-headers:
68
+ - X-Repo-Commit,X-Request-Id,X-Error-Code,X-Error-Message,X-Total-Count,ETag,Link,Accept-Ranges,Content-Range,X-Linked-Size,X-Linked-ETag,X-Xet-Hash
69
+ connection:
70
+ - keep-alive
71
+ content-length:
72
+ - '5526'
73
+ content-type:
74
+ - application/json
75
+ cross-origin-opener-policy:
76
+ - same-origin
77
+ referrer-policy:
78
+ - strict-origin-when-cross-origin
79
+ strict-transport-security:
80
+ - max-age=31536000; includeSubDomains
81
+ vary:
82
+ - Origin
83
+ parsed_body:
84
+ choices:
85
+ - finish_reason: stop
86
+ index: 0
87
+ logprobs: null
88
+ message:
89
+ audio: null
90
+ content: "<think>\nOkay, the user is asking how to cross the street safely. Let me break this down step by step.
91
+ First, they need to look both ways to check for cars. But wait, should they check left, right, then left again?
92
+ I remember that's a common safety tip. They might be in a country where people drive on the right side or the
93
+ left, so maybe should I mention that?\n\nAlso, traffic signals and signs are important. What about pedestrian
94
+ crossings or traffic lights? Explaining when to walk when the signal is green and the cars have stopped. Oh, right,
95
+ sometimes people might not realize to wait for the walk signal. And even when using a crosswalk, you still need
96
+ to look both ways because cars might not stop.\n\nDistractions like phones or headphones. Yeah, people often get
97
+ hurt because they're looking at their phone while crossing. Should advise them to put away distractions and stay
98
+ alert. Kids and elderly folks might need extra care, like holding an adult's hand.\n\nWhat about if there's no
99
+ traffic light or crosswalk? Then finding the safest spot with good visibility, maybe near a corner where cars
100
+ can see them better. And teaching kids the basics of street safety.\n\nAlso, the confidence aspect—don't rush,
101
+ take your time, make eye contact with drivers. And what to do if stuck in the middle? Wait for the next signal.
102
+ Oh, and bicycles! In some places, bike lanes cross sidewalks, so being watchful for cyclists too.\n\nWait, should
103
+ I structure these points in a numbered list? Start with stopping at the curb, then looking both ways, checking
104
+ traffic signals, obeying signs, avoiding distractions, using crosswalks if possible, teaching kids, staying visible,
105
+ making eye contact, and what to do if stuck. Maybe add something about not assuming drivers see them and being
106
+ cautious.\n\nLet me make sure not to miss any key points. Also, mention that it's safer to cross at intersections.
107
+ And maybe a final note about local laws or practices varying by country. Yeah, that covers the main points. I
108
+ should present it clearly so it's easy to follow step by step without getting overwhelmed.\n</think>\n\nCrossing
109
+ the street safely requires attention, patience, and following key steps. Here's a clear guide:\n\n1. **Stop at
110
+ the Curb**: Find a safe spot to pause before stepping onto the road.\n\n2. **Look Both Ways (Left, Right, Then
111
+ Left Again!)** \n - **First check left**: Look for oncoming traffic from your left (if driving is on the right
112
+ side in your country). \n - **Then check right**: Check for vehicles coming from the right. \n - **Final
113
+ glance left**: Recheck the direction of traffic closest to you before stepping off the curb. \n *(Reverse this
114
+ order if driving is on the left, as in the UK or Japan.)*\n\n3. **Use Traffic Signals and Crosswalks**: \n -
115
+ Wait for the pedestrian \"walk\" signal (green hand or similar). \n - If there’s no signal, only cross once
116
+ all vehicles have come to a complete stop and you’ve made eye contact with drivers. \n - Follow any painted
117
+ crosswalk lines and stay within them.\n\n4. **Obey Traffic Signs/Lights**: \n - Red/yellow lights mean stop.
118
+ Green means it’s safe to start crossing, but still watch for turning vehicles. \n - If the \"don’t walk\" signal
119
+ flashes while you’re mid-crossing, finish crossing without rushing.\n\n5. **Avoid Distractions**: \n - Put
120
+ away phones, earbuds, or anything that blocks your senses. \n - Keep your head up and stay alert to your surroundings.\n\n6.
121
+ **Be Visible and Predictable**: \n - Wear bright/light-colored clothing, especially at night. \n - Walk
122
+ (don’t run) and follow the flow of traffic. Avoid sudden changes in direction.\n\n7. **Teach Children Safely**:
123
+ \ \n - Hold young children’s hands. \n - Practice the \"stop, look, listen\" rule together. \n - Teach
124
+ them to make eye contact with drivers before crossing.\n\n8. **Cross at Intersections When Possible**: \n -
125
+ Drivers expect pedestrians at crosswalks and intersections. \n - If no crosswalk exists, choose a spot with
126
+ clear visibility (e.g., where you can see around parked cars).\n\n9. **Don’t Assume Drivers See You**: \n -
127
+ Even if a car stops, check for other vehicles that might not yield. \n - At night, use a flashlight or phone
128
+ light to stay visible.\n\n10. **What to Do if Stuck Mid-Street**: \n - If the light changes before you reach
129
+ the other side, stay calm. \n - Stop at the median or safety island and wait for the next signal. \n\n**Bonus
130
+ Tip**: In areas with bike lanes, check for cyclists even once you’ve started crossing. In some places, bikes ride
131
+ against traffic flow, so look both ways even on one-way streets.\n\n**Local Laws Matter**: Check rules in your
132
+ area—e.g., some places require yielding to pedestrians, while others prioritize drivers. Always prioritize your
133
+ safety over assumptions.\n\nFollow these steps, and you’ll cross the street confidently and safely every time!
134
+ \U0001F6B6♀️ ✅"
135
+ function_call: null
136
+ reasoning_content: null
137
+ refusal: null
138
+ role: assistant
139
+ tool_calls: []
140
+ stop_reason: null
141
+ created: 1752067065
142
+ id: chatcmpl-957db61fe60d4440bcfe1f11f2c5b4b9
143
+ model: Qwen/Qwen3-235B-A22B
144
+ object: chat.completion
145
+ prompt_logprobs: null
146
+ service_tier: null
147
+ system_fingerprint: null
148
+ usage:
149
+ completion_tokens: 1090
150
+ completion_tokens_details: null
151
+ prompt_tokens: 15
152
+ prompt_tokens_details: null
153
+ total_tokens: 1105
154
+ status:
155
+ code: 200
156
+ message: OK
157
+ - request:
158
+ body: null
159
+ headers: {}
160
+ method: POST
161
+ uri: https://router.huggingface.co/nebius/v1/chat/completions
162
+ response:
163
+ headers:
164
+ access-control-allow-credentials:
165
+ - 'true'
166
+ access-control-allow-origin:
167
+ - '*'
168
+ access-control-expose-headers:
169
+ - X-Repo-Commit,X-Request-Id,X-Error-Code,X-Error-Message,X-Total-Count,ETag,Link,Accept-Ranges,Content-Range,X-Linked-Size,X-Linked-ETag,X-Xet-Hash
170
+ connection:
171
+ - keep-alive
172
+ content-length:
173
+ - '9391'
174
+ content-type:
175
+ - application/json
176
+ cross-origin-opener-policy:
177
+ - same-origin
178
+ referrer-policy:
179
+ - strict-origin-when-cross-origin
180
+ strict-transport-security:
181
+ - max-age=31536000; includeSubDomains
182
+ vary:
183
+ - Origin
184
+ parsed_body:
185
+ choices:
186
+ - finish_reason: stop
187
+ index: 0
188
+ logprobs: null
189
+ message:
190
+ audio: null
191
+ content: "<think>\nOkay, the user previously asked how to cross the street, and I gave a detailed answer. Now they're
192
+ asking about crossing a river analogously. Let me start by understanding the connection. They want a similar structured
193
+ approach but for crossing a river.\n\nFirst, I need to figure out the equivalents between crossing a street and
194
+ a river. The original steps included looking both ways, using signals, avoiding distractions, etc. For a river,
195
+ physical steps might involve checking the current, choosing a safe spot, maybe using a bridge or boat.\n\nI should
196
+ map each street-crossing step to a river scenario. For example, \"stop at the curb\" becomes \"assess the riverbank.\"
197
+ Instead of traffic signals, check for ferry schedules or bridge access. Use safety equipment like life jackets
198
+ instead of wearing bright clothes.\n\nWait, the user mentioned \"analogously,\" so the structure should mirror
199
+ the previous answer but with river-specific actions. Maybe start by pausing to observe the river, checking water
200
+ flow instead of traffic. Use bridges as crosswalks and traffic signals. Boating has its own signals, like flags
201
+ or lights.\n\nAlso, think about hazards unique to rivers: strong currents, slippery rocks, wildlife. Safety considerations
202
+ here would involve knowing how to swim, having a floatation device, not relying on unreliable methods like jumping
203
+ on rocks.\n\nNeed to include steps like evaluating the crossing point, checking for bridges or fords, using boats
204
+ if necessary, avoiding hazards. Maybe mention time-sensitive factors like weather or flooding, similar to obeying
205
+ traffic lights.\n\nI should ensure each point from the previous answer has a parallel. For example, distractions
206
+ like phones would be like not paying attention to the river's flow. Visibility could mean wearing bright colors
207
+ to be seen on the water.\n\nAlso, consider group scenarios or children, making sure everyone knows the plan. Teaching
208
+ kids to cross safely here might involve knowing how to use floatation devices.\n\nI need to make sure the answer
209
+ is comprehensive but clear, following the same logical structure as the street crossing answer. Maybe list steps
210
+ in order, similar to the original list. Check for completeness: assessment, choosing the method, using proper
211
+ equipment, following safety protocols, dealing with emergencies mid-crossing, etc.\n\nWait, the original answer
212
+ had 10 points plus a bonus tip. Should mirror that structure? Maybe create a list with parallels. Also, ensure
213
+ that analogies are accurate—traffic becomes currents, crosswalks become bridges or fords, traffic signals become
214
+ navigational markers or ferry schedules.\n\nAvoiding distractions would involve focusing on the water's movement
215
+ and surroundings, not looking at devices. Visibility in water might involve reflective gear or signaling.\n\nAlso,
216
+ legal aspects: crossing at authorized spots only, checking if permits are needed. Local hazards or regulations
217
+ could be like local traffic laws.\n\nPotential mistakes: Maybe comparing the river's current to traffic is too
218
+ direct. Or missing steps like testing the stability of a path across the river, which isn't present in street
219
+ crossing. Need to add those unique elements naturally.\n\nAlso, emergencies: If mid-river and something goes wrong,
220
+ similar to being stuck on the street. Having a plan, like heading to a safer area or using safety equipment.\n\nAlright,
221
+ structure each point as an analogy, then expand with river-specific advice. Make sure the order parallels the
222
+ original. Use similar section titles but adapted. Maybe end with a note on local conditions and safety first.\n</think>\n\nCrossing
223
+ a river safely shares many principles with crossing a street but involves adapting to the unpredictable nature
224
+ of water. Below is an analogy-based guide, mirroring the street-crossing steps while addressing river-specific
225
+ challenges:\n\n---\n\n### **1. Stop at the Riverbank: Assess the Situation**\n - **Pause and Observe** \n Like
226
+ stopping at the curb, stand back from the edge to evaluate the river’s width, speed, and hazards (swift currents,
227
+ rocks, debris, depth). \n - **Check for Bridges/Piers/Crossings** \n Just as intersections prioritize
228
+ pedestrian safety, bridges or marked fords exist for safer passage. Use them if accessible. \n\n---\n\n### **2.
229
+ Read the River: Look Both Upstream and Downstream** \n - **Scan Both Directions** \n Just as you look
230
+ left/right for cars, search **upstream (left if driving is right-hand)** for hazards like floating debris or sudden
231
+ surges. Check **downstream (right)** for exit points in case you’re swept away. \n - **Check the Flow** \n
232
+ \ Assess current strength: Is it a gentle trickle or a raging torrent? Avoid crossing if water is above knee-deep
233
+ or too fast. \n\n---\n\n### **3. Use Safe Routes: Bridges, Ferries, or Designated Fords** \n - **Follow Traffic
234
+ Signals → Follow Nautical Rules** \n Wait for ferry schedules, flashing lights (if present), or buoys marking
235
+ safe paths. Cross only when signals (like a ferry’s horn) indicate it’s safe. \n - **Choose a Footbridge or
236
+ Ferry** \n Bridges eliminate water risks entirely, much like crosswalks. Ferries or boats (with licensed
237
+ operators) are safest for wider rivers. \n\n---\n\n### **4. Prioritize Your Path: Know Where to Step or Swim**
238
+ \ \n - **Identify Stable Rocks or Shallows** \n If wading, pick a route with flat, secure footing (like
239
+ stepping stones) or the shallowest stretch, avoiding slippery algae-covered surfaces. \n - **Test the Current**
240
+ \ \n Before fully entering, use a stick or rock to gauge the force of the water. Swift currents can sweep
241
+ you off your feet faster than a car can strike. \n\n---\n\n### **5. Avoid Distractions: Focus on the Movement**
242
+ \ \n - **Put Away Devices** \n A phone distraction here risks losing balance in the river versus stepping
243
+ blindly into traffic. Keep both hands free for stability. \n - **Listen to the River** \n Gurgling or
244
+ roaring water warns of hidden holes or rapids—similar to hearing a car engine approaching. \n\n---\n\n### **6.
245
+ Be Predictable and Visible: Wear Bright Gear or Floats** \n - **Wear a Life Jacket** \n Like high-visibility
246
+ clothing, a life jacket keeps you buoyant and makes you easier for rescuers or boat operators to spot. \n -
247
+ **Stick to a Straight Route** \n Zigzagging in water wastes energy and increases the risk of losing balance,
248
+ just as darting across lanes on a street invites accidents. \n\n---\n\n### **7. Communicate: Make Eye Contact
249
+ with Boaters or Guides** \n - **Signal to Operators** \n In small boats or rafts, wave to catch the attention
250
+ of passing vessels (like making eye contact with drivers) to ensure they see you. \n - **Use Hand Signals or
251
+ Whistles** \n Agree on emergency signals with your group beforehand (e.g., pointing downstream to signal
252
+ danger). \n\n---\n\n### **8. Cross at the Safest Spot: Avoid Mid-River Surprises** \n - **Choose Wide, Slow
253
+ Sections** \n Like crossing at intersections, wide shallow areas have gentler currents. Avoid narrows where
254
+ water funnels into rapids. \n - **Watch for Hidden Dangers** \n Submerged logs, sudden drop-offs, or hypothermic
255
+ cold water can be as lethal as a speeding car. \n\n---\n\n### **9. Don’t Assume Safety: Verify Every Step or
256
+ Stroke** \n - **Test Each Footstep** \n Tap the riverbed before transferring weight to avoid stepping
257
+ into a hole or loose gravel (like checking for icy patches on a sidewalk). \n - **Swim Only If Trained** \n
258
+ \ If the river is too deep to wade, only swim if you know how. Use floatation devices if unsure—similar to
259
+ holding an adult’s hand as a child crossing a street. \n\n---\n\n### **10. Mid-River Emergencies: What to Do
260
+ if Stuck** \n - **If Struck by Current** \n Stay calm, float on your back with feet downstream (to avoid
261
+ head-first collisions), and steer toward eddies or the shore. \n - **If Trapped on a Rock** \n Hug a large
262
+ rock and wait for help, like pausing at a median. Don’t risk swimming diagonally across the river’s flow. \n\n---\n\n###
263
+ **Bonus Tip: Adapt to Local Conditions** \n - **Research Hazards** \n Some rivers have undertows, wildlife,
264
+ or pollution. Check local warnings (like road signs for blind corners or school zones). \n - **Weather Watch**
265
+ \ \n Sudden rainstorms can cause flash floods—delay crossing if clouds mass on the horizon. \n\n---\n\nBy
266
+ applying street-crossing principles to river navigation—patience, situational awareness, and prioritizing safe
267
+ infrastructure—you can minimize risks. Always assume the river is more dangerous than it appears, just as you’d
268
+ treat an unfamiliar road. **Safety first, crossing second!** \U0001F30A \U0001F6A4 ⚠️"
269
+ function_call: null
270
+ reasoning_content: null
271
+ refusal: null
272
+ role: assistant
273
+ tool_calls: []
274
+ stop_reason: null
275
+ created: 1752067094
276
+ id: chatcmpl-35fdec1307634f94a39f7e26f52e12a7
277
+ model: Qwen/Qwen3-235B-A22B
278
+ object: chat.completion
279
+ prompt_logprobs: null
280
+ service_tier: null
281
+ system_fingerprint: null
282
+ usage:
283
+ completion_tokens: 1860
284
+ completion_tokens_details: null
285
+ prompt_tokens: 691
286
+ prompt_tokens_details: null
287
+ total_tokens: 2551
288
+ status:
289
+ code: 200
290
+ message: OK
291
+ version: 1
@@ -0,0 +1,106 @@
1
+ interactions:
2
+ - request:
3
+ body: null
4
+ headers:
5
+ accept:
6
+ - '*/*'
7
+ accept-encoding:
8
+ - gzip, deflate
9
+ connection:
10
+ - keep-alive
11
+ method: GET
12
+ uri: https://huggingface.co/api/models/Qwen/Qwen2.5-VL-72B-Instruct?expand=inferenceProviderMapping
13
+ response:
14
+ headers:
15
+ access-control-allow-origin:
16
+ - https://huggingface.co
17
+ access-control-expose-headers:
18
+ - X-Repo-Commit,X-Request-Id,X-Error-Code,X-Error-Message,X-Total-Count,ETag,Link,Accept-Ranges,Content-Range,X-Linked-Size,X-Linked-ETag,X-Xet-Hash
19
+ connection:
20
+ - keep-alive
21
+ content-length:
22
+ - '293'
23
+ content-type:
24
+ - application/json; charset=utf-8
25
+ cross-origin-opener-policy:
26
+ - same-origin
27
+ etag:
28
+ - W/"125-DEMuQsKZBCb9/68jW5UsI3Q7x7E"
29
+ referrer-policy:
30
+ - strict-origin-when-cross-origin
31
+ vary:
32
+ - Origin
33
+ parsed_body:
34
+ _id: 6797079422990ae89b5aff86
35
+ id: Qwen/Qwen2.5-VL-72B-Instruct
36
+ inferenceProviderMapping:
37
+ hyperbolic:
38
+ providerId: Qwen/Qwen2.5-VL-72B-Instruct
39
+ status: live
40
+ task: conversational
41
+ nebius:
42
+ providerId: Qwen/Qwen2.5-VL-72B-Instruct
43
+ status: live
44
+ task: conversational
45
+ status:
46
+ code: 200
47
+ message: OK
48
+ - request:
49
+ body: null
50
+ headers: {}
51
+ method: POST
52
+ uri: https://router.huggingface.co/nebius/v1/chat/completions
53
+ response:
54
+ headers:
55
+ access-control-allow-credentials:
56
+ - 'true'
57
+ access-control-allow-origin:
58
+ - '*'
59
+ access-control-expose-headers:
60
+ - X-Repo-Commit,X-Request-Id,X-Error-Code,X-Error-Message,X-Total-Count,ETag,Link,Accept-Ranges,Content-Range,X-Linked-Size,X-Linked-ETag,X-Xet-Hash
61
+ connection:
62
+ - keep-alive
63
+ content-length:
64
+ - '776'
65
+ content-type:
66
+ - application/json
67
+ cross-origin-opener-policy:
68
+ - same-origin
69
+ referrer-policy:
70
+ - strict-origin-when-cross-origin
71
+ strict-transport-security:
72
+ - max-age=31536000; includeSubDomains
73
+ vary:
74
+ - Origin
75
+ parsed_body:
76
+ choices:
77
+ - finish_reason: stop
78
+ index: 0
79
+ logprobs: null
80
+ message:
81
+ audio: null
82
+ content: The fruit in the image is a kiwi. It has been sliced in half, revealing its bright green flesh with small
83
+ black seeds arranged in a circular pattern around a white center. The outer skin of the kiwi is fuzzy and brown.
84
+ function_call: null
85
+ reasoning_content: null
86
+ refusal: null
87
+ role: assistant
88
+ tool_calls: []
89
+ stop_reason: null
90
+ created: 1751986733
91
+ id: chatcmpl-bd957b950cce4d61839e2af25f56f684
92
+ model: Qwen/Qwen2.5-VL-72B-Instruct
93
+ object: chat.completion
94
+ prompt_logprobs: null
95
+ service_tier: null
96
+ system_fingerprint: null
97
+ usage:
98
+ completion_tokens: 49
99
+ completion_tokens_details: null
100
+ prompt_tokens: 7625
101
+ prompt_tokens_details: null
102
+ total_tokens: 7674
103
+ status:
104
+ code: 200
105
+ message: OK
106
+ version: 1