mirascope 1.24.2__tar.gz → 1.25.0__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.
Files changed (738) hide show
  1. mirascope-1.25.0/.claude/settings.local.json +10 -0
  2. {mirascope-1.24.2 → mirascope-1.25.0}/PKG-INFO +1 -1
  3. mirascope-1.25.0/mirascope/core/anthropic/_thinking.py +70 -0
  4. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/anthropic/_utils/_setup_call.py +13 -1
  5. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/anthropic/call_params.py +3 -0
  6. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/anthropic/call_response.py +23 -3
  7. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/anthropic/call_response_chunk.py +20 -0
  8. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/anthropic/stream.py +57 -0
  9. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/google/call_response.py +24 -1
  10. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/google/call_response_chunk.py +20 -2
  11. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/google/stream.py +58 -2
  12. {mirascope-1.24.2 → mirascope-1.25.0}/pyproject.toml +1 -1
  13. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/anthropic/_utils/test_setup_call.py +42 -0
  14. mirascope-1.25.0/tests/core/anthropic/test_call_response.py +314 -0
  15. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/anthropic/test_call_response_chunk.py +40 -0
  16. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/anthropic/test_stream.py +88 -1
  17. mirascope-1.25.0/tests/core/google/test_call_response.py +380 -0
  18. mirascope-1.25.0/tests/core/google/test_call_response_chunk.py +107 -0
  19. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/google/test_stream.py +125 -0
  20. {mirascope-1.24.2 → mirascope-1.25.0}/uv.lock +4 -4
  21. mirascope-1.24.2/tests/core/anthropic/test_call_response.py +0 -132
  22. mirascope-1.24.2/tests/core/google/test_call_response.py +0 -155
  23. mirascope-1.24.2/tests/core/google/test_call_response_chunk.py +0 -45
  24. {mirascope-1.24.2 → mirascope-1.25.0}/.github/CODEOWNERS +0 -0
  25. {mirascope-1.24.2 → mirascope-1.25.0}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  26. {mirascope-1.24.2 → mirascope-1.25.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  27. {mirascope-1.24.2 → mirascope-1.25.0}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  28. {mirascope-1.24.2 → mirascope-1.25.0}/.github/ISSUE_TEMPLATE/question.yml +0 -0
  29. {mirascope-1.24.2 → mirascope-1.25.0}/.github/workflows/label_issues.yml +0 -0
  30. {mirascope-1.24.2 → mirascope-1.25.0}/.github/workflows/lint.yml +0 -0
  31. {mirascope-1.24.2 → mirascope-1.25.0}/.github/workflows/release.yml +0 -0
  32. {mirascope-1.24.2 → mirascope-1.25.0}/.github/workflows/tests.yml +0 -0
  33. {mirascope-1.24.2 → mirascope-1.25.0}/.gitignore +0 -0
  34. {mirascope-1.24.2 → mirascope-1.25.0}/.pre-commit-config.yaml +0 -0
  35. {mirascope-1.24.2 → mirascope-1.25.0}/.vscode/extensions.json +0 -0
  36. {mirascope-1.24.2 → mirascope-1.25.0}/.vscode/launch.json +0 -0
  37. {mirascope-1.24.2 → mirascope-1.25.0}/.vscode/settings.json +0 -0
  38. {mirascope-1.24.2 → mirascope-1.25.0}/LICENSE +0 -0
  39. {mirascope-1.24.2 → mirascope-1.25.0}/README.md +0 -0
  40. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/anthropic/call.md +0 -0
  41. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/anthropic/call_params.md +0 -0
  42. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/anthropic/call_response.md +0 -0
  43. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/anthropic/call_response_chunk.md +0 -0
  44. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/anthropic/dynamic_config.md +0 -0
  45. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/anthropic/stream.md +0 -0
  46. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/anthropic/tool.md +0 -0
  47. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/azure/call.md +0 -0
  48. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/azure/call_params.md +0 -0
  49. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/azure/call_response.md +0 -0
  50. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/azure/call_response_chunk.md +0 -0
  51. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/azure/dynamic_config.md +0 -0
  52. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/azure/stream.md +0 -0
  53. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/azure/tool.md +0 -0
  54. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/base/call_factory.md +0 -0
  55. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/base/call_params.md +0 -0
  56. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/base/call_response.md +0 -0
  57. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/base/call_response_chunk.md +0 -0
  58. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/base/dynamic_config.md +0 -0
  59. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/base/merge_decorators.md +0 -0
  60. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/base/message_param.md +0 -0
  61. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/base/metadata.md +0 -0
  62. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/base/prompt.md +0 -0
  63. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/base/stream.md +0 -0
  64. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/base/structured_stream.md +0 -0
  65. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/base/tool.md +0 -0
  66. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/base/toolkit.md +0 -0
  67. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/base/types.md +0 -0
  68. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/bedrock/call.md +0 -0
  69. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/bedrock/call_params.md +0 -0
  70. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/bedrock/call_response.md +0 -0
  71. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/bedrock/call_response_chunk.md +0 -0
  72. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/bedrock/dynamic_config.md +0 -0
  73. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/bedrock/stream.md +0 -0
  74. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/bedrock/tool.md +0 -0
  75. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/cohere/call.md +0 -0
  76. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/cohere/call_params.md +0 -0
  77. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/cohere/call_response.md +0 -0
  78. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/cohere/call_response_chunk.md +0 -0
  79. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/cohere/dynamic_config.md +0 -0
  80. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/cohere/stream.md +0 -0
  81. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/cohere/tool.md +0 -0
  82. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/costs/calculate_cost.md +0 -0
  83. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/google/call.md +0 -0
  84. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/google/call_params.md +0 -0
  85. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/google/call_response.md +0 -0
  86. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/google/call_response_chunk.md +0 -0
  87. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/google/dynamic_config.md +0 -0
  88. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/google/stream.md +0 -0
  89. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/google/tool.md +0 -0
  90. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/groq/call.md +0 -0
  91. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/groq/call_params.md +0 -0
  92. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/groq/call_response.md +0 -0
  93. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/groq/call_response_chunk.md +0 -0
  94. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/groq/dynamic_config.md +0 -0
  95. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/groq/stream.md +0 -0
  96. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/groq/tool.md +0 -0
  97. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/litellm/call.md +0 -0
  98. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/litellm/call_params.md +0 -0
  99. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/litellm/call_response.md +0 -0
  100. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/litellm/call_response_chunk.md +0 -0
  101. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/litellm/dynamic_config.md +0 -0
  102. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/litellm/stream.md +0 -0
  103. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/litellm/tool.md +0 -0
  104. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/mistral/call.md +0 -0
  105. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/mistral/call_params.md +0 -0
  106. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/mistral/call_response.md +0 -0
  107. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/mistral/call_response_chunk.md +0 -0
  108. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/mistral/dynamic_config.md +0 -0
  109. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/mistral/stream.md +0 -0
  110. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/mistral/tool.md +0 -0
  111. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/openai/call.md +0 -0
  112. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/openai/call_params.md +0 -0
  113. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/openai/call_response.md +0 -0
  114. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/openai/call_response_chunk.md +0 -0
  115. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/openai/dynamic_config.md +0 -0
  116. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/openai/stream.md +0 -0
  117. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/openai/tool.md +0 -0
  118. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/xai/call.md +0 -0
  119. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/xai/call_params.md +0 -0
  120. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/xai/call_response.md +0 -0
  121. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/xai/call_response_chunk.md +0 -0
  122. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/xai/dynamic_config.md +0 -0
  123. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/xai/stream.md +0 -0
  124. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/core/xai/tool.md +0 -0
  125. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/llm/call.md +0 -0
  126. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/llm/call_response.md +0 -0
  127. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/llm/call_response_chunk.md +0 -0
  128. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/llm/context.md +0 -0
  129. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/llm/override.md +0 -0
  130. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/llm/stream.md +0 -0
  131. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/llm/tool.md +0 -0
  132. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/mcp/client.md +0 -0
  133. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/retries/fallback.md +0 -0
  134. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/retries/tenacity.md +0 -0
  135. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/tools/system/docker_operation.md +0 -0
  136. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/tools/system/file_system.md +0 -0
  137. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/tools/web/duckduckgo.md +0 -0
  138. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/tools/web/httpx.md +0 -0
  139. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/tools/web/parse_url_content.md +0 -0
  140. {mirascope-1.24.2 → mirascope-1.25.0}/api_ref/tools/web/requests.md +0 -0
  141. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/__init__.py +0 -0
  142. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/__init__.py +0 -0
  143. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/openai/__init__.py +0 -0
  144. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/openai/realtime/__init__.py +0 -0
  145. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/openai/realtime/_utils/__init__.py +0 -0
  146. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/openai/realtime/_utils/_audio.py +0 -0
  147. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/openai/realtime/_utils/_protocols.py +0 -0
  148. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/openai/realtime/realtime.py +0 -0
  149. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/openai/realtime/recording.py +0 -0
  150. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/openai/realtime/tool.py +0 -0
  151. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/__init__.py +0 -0
  152. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/base/__init__.py +0 -0
  153. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/base/chunkers/__init__.py +0 -0
  154. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/base/chunkers/base_chunker.py +0 -0
  155. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/base/chunkers/text_chunker.py +0 -0
  156. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/base/config.py +0 -0
  157. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/base/document.py +0 -0
  158. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/base/embedders.py +0 -0
  159. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/base/embedding_params.py +0 -0
  160. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/base/embedding_response.py +0 -0
  161. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/base/query_results.py +0 -0
  162. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/base/vectorstore_params.py +0 -0
  163. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/base/vectorstores.py +0 -0
  164. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/chroma/__init__.py +0 -0
  165. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/chroma/types.py +0 -0
  166. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/chroma/vectorstores.py +0 -0
  167. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/cohere/__init__.py +0 -0
  168. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/cohere/embedders.py +0 -0
  169. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/cohere/embedding_params.py +0 -0
  170. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/cohere/embedding_response.py +0 -0
  171. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/cohere/py.typed +0 -0
  172. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/openai/__init__.py +0 -0
  173. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/openai/embedders.py +0 -0
  174. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/openai/embedding_params.py +0 -0
  175. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/openai/embedding_response.py +0 -0
  176. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/openai/py.typed +0 -0
  177. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/pinecone/__init__.py +0 -0
  178. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/pinecone/types.py +0 -0
  179. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/pinecone/vectorstores.py +0 -0
  180. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/weaviate/__init__.py +0 -0
  181. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/weaviate/types.py +0 -0
  182. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/beta/rag/weaviate/vectorstores.py +0 -0
  183. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/__init__.py +0 -0
  184. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/anthropic/__init__.py +0 -0
  185. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/anthropic/_call.py +0 -0
  186. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/anthropic/_call_kwargs.py +0 -0
  187. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/anthropic/_utils/__init__.py +0 -0
  188. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/anthropic/_utils/_convert_common_call_params.py +0 -0
  189. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/anthropic/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -0
  190. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/anthropic/_utils/_convert_message_params.py +0 -0
  191. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/anthropic/_utils/_get_json_output.py +0 -0
  192. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/anthropic/_utils/_handle_stream.py +0 -0
  193. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/anthropic/_utils/_message_param_converter.py +0 -0
  194. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/anthropic/dynamic_config.py +0 -0
  195. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/anthropic/py.typed +0 -0
  196. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/anthropic/tool.py +0 -0
  197. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/azure/__init__.py +0 -0
  198. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/azure/_call.py +0 -0
  199. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/azure/_call_kwargs.py +0 -0
  200. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/azure/_utils/__init__.py +0 -0
  201. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/azure/_utils/_convert_common_call_params.py +0 -0
  202. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/azure/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -0
  203. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/azure/_utils/_convert_message_params.py +0 -0
  204. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/azure/_utils/_get_credential.py +0 -0
  205. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/azure/_utils/_get_json_output.py +0 -0
  206. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/azure/_utils/_handle_stream.py +0 -0
  207. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/azure/_utils/_message_param_converter.py +0 -0
  208. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/azure/_utils/_setup_call.py +0 -0
  209. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/azure/call_params.py +0 -0
  210. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/azure/call_response.py +0 -0
  211. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/azure/call_response_chunk.py +0 -0
  212. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/azure/dynamic_config.py +0 -0
  213. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/azure/py.typed +0 -0
  214. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/azure/stream.py +0 -0
  215. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/azure/tool.py +0 -0
  216. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/__init__.py +0 -0
  217. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_call_factory.py +0 -0
  218. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_create.py +0 -0
  219. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_extract.py +0 -0
  220. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_extract_with_tools.py +0 -0
  221. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_partial.py +0 -0
  222. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/__init__.py +0 -0
  223. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_base_message_param_converter.py +0 -0
  224. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_base_type.py +0 -0
  225. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_convert_base_model_to_base_tool.py +0 -0
  226. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_convert_base_type_to_base_tool.py +0 -0
  227. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_convert_function_to_base_tool.py +0 -0
  228. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_convert_messages_to_message_params.py +0 -0
  229. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_convert_provider_finish_reason_to_finish_reason.py +0 -0
  230. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_default_tool_docstring.py +0 -0
  231. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_extract_tool_return.py +0 -0
  232. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_fn_is_async.py +0 -0
  233. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_format_template.py +0 -0
  234. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_get_audio_type.py +0 -0
  235. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_get_common_usage.py +0 -0
  236. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_get_create_fn_or_async_create_fn.py +0 -0
  237. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_get_document_type.py +0 -0
  238. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_get_dynamic_configuration.py +0 -0
  239. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_get_fields_from_call_args.py +0 -0
  240. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_get_fn_args.py +0 -0
  241. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_get_image_dimensions.py +0 -0
  242. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_get_image_type.py +0 -0
  243. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_get_metadata.py +0 -0
  244. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_get_possible_user_message_param.py +0 -0
  245. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_get_prompt_template.py +0 -0
  246. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_get_template_values.py +0 -0
  247. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_get_template_variables.py +0 -0
  248. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_get_unsupported_tool_config_keys.py +0 -0
  249. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_is_prompt_template.py +0 -0
  250. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_json_mode_content.py +0 -0
  251. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_messages_decorator.py +0 -0
  252. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_parse_content_template.py +0 -0
  253. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_parse_prompt_messages.py +0 -0
  254. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_pil_image_to_bytes.py +0 -0
  255. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_protocols.py +0 -0
  256. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_setup_call.py +0 -0
  257. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/_utils/_setup_extract_tool.py +0 -0
  258. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/call_kwargs.py +0 -0
  259. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/call_params.py +0 -0
  260. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/call_response.py +0 -0
  261. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/call_response_chunk.py +0 -0
  262. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/dynamic_config.py +0 -0
  263. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/from_call_args.py +0 -0
  264. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/merge_decorators.py +0 -0
  265. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/message_param.py +0 -0
  266. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/messages.py +0 -0
  267. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/metadata.py +0 -0
  268. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/prompt.py +0 -0
  269. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/response_model_config_dict.py +0 -0
  270. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/stream.py +0 -0
  271. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/stream_config.py +0 -0
  272. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/structured_stream.py +0 -0
  273. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/tool.py +0 -0
  274. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/toolkit.py +0 -0
  275. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/base/types.py +0 -0
  276. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/bedrock/__init__.py +0 -0
  277. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/bedrock/_call.py +0 -0
  278. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/bedrock/_call_kwargs.py +0 -0
  279. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/bedrock/_types.py +0 -0
  280. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/bedrock/_utils/__init__.py +0 -0
  281. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/bedrock/_utils/_convert_common_call_params.py +0 -0
  282. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/bedrock/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -0
  283. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/bedrock/_utils/_convert_message_params.py +0 -0
  284. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/bedrock/_utils/_get_json_output.py +0 -0
  285. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/bedrock/_utils/_handle_stream.py +0 -0
  286. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/bedrock/_utils/_message_param_converter.py +0 -0
  287. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/bedrock/_utils/_setup_call.py +0 -0
  288. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/bedrock/call_params.py +0 -0
  289. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/bedrock/call_response.py +0 -0
  290. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/bedrock/call_response_chunk.py +0 -0
  291. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/bedrock/dynamic_config.py +0 -0
  292. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/bedrock/py.typed +0 -0
  293. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/bedrock/stream.py +0 -0
  294. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/bedrock/tool.py +0 -0
  295. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/cohere/__init__.py +0 -0
  296. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/cohere/_call.py +0 -0
  297. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/cohere/_call_kwargs.py +0 -0
  298. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/cohere/_types.py +0 -0
  299. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/cohere/_utils/__init__.py +0 -0
  300. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/cohere/_utils/_convert_common_call_params.py +0 -0
  301. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/cohere/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -0
  302. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/cohere/_utils/_convert_message_params.py +0 -0
  303. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/cohere/_utils/_get_json_output.py +0 -0
  304. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/cohere/_utils/_handle_stream.py +0 -0
  305. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/cohere/_utils/_message_param_converter.py +0 -0
  306. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/cohere/_utils/_setup_call.py +0 -0
  307. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/cohere/call_params.py +0 -0
  308. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/cohere/call_response.py +0 -0
  309. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/cohere/call_response_chunk.py +0 -0
  310. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/cohere/dynamic_config.py +0 -0
  311. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/cohere/py.typed +0 -0
  312. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/cohere/stream.py +0 -0
  313. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/cohere/tool.py +0 -0
  314. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/costs/__init__.py +0 -0
  315. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/costs/_anthropic_calculate_cost.py +0 -0
  316. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/costs/_azure_calculate_cost.py +0 -0
  317. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/costs/_bedrock_calculate_cost.py +0 -0
  318. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/costs/_cohere_calculate_cost.py +0 -0
  319. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/costs/_gemini_calculate_cost.py +0 -0
  320. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/costs/_google_calculate_cost.py +0 -0
  321. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/costs/_groq_calculate_cost.py +0 -0
  322. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/costs/_litellm_calculate_cost.py +0 -0
  323. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/costs/_mistral_calculate_cost.py +0 -0
  324. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/costs/_openai_calculate_cost.py +0 -0
  325. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/costs/_vertex_calculate_cost.py +0 -0
  326. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/costs/_xai_calculate_cost.py +0 -0
  327. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/costs/calculate_cost.py +0 -0
  328. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/gemini/__init__.py +0 -0
  329. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/gemini/_call.py +0 -0
  330. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/gemini/_call_kwargs.py +0 -0
  331. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/gemini/_utils/__init__.py +0 -0
  332. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/gemini/_utils/_convert_common_call_params.py +0 -0
  333. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/gemini/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -0
  334. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/gemini/_utils/_convert_message_params.py +0 -0
  335. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/gemini/_utils/_get_json_output.py +0 -0
  336. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/gemini/_utils/_handle_stream.py +0 -0
  337. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/gemini/_utils/_message_param_converter.py +0 -0
  338. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/gemini/_utils/_setup_call.py +0 -0
  339. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/gemini/call_params.py +0 -0
  340. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/gemini/call_response.py +0 -0
  341. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/gemini/call_response_chunk.py +0 -0
  342. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/gemini/dynamic_config.py +0 -0
  343. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/gemini/stream.py +0 -0
  344. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/gemini/tool.py +0 -0
  345. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/google/__init__.py +0 -0
  346. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/google/_call.py +0 -0
  347. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/google/_call_kwargs.py +0 -0
  348. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/google/_utils/__init__.py +0 -0
  349. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/google/_utils/_convert_common_call_params.py +0 -0
  350. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/google/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -0
  351. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/google/_utils/_convert_message_params.py +0 -0
  352. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/google/_utils/_get_json_output.py +0 -0
  353. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/google/_utils/_handle_stream.py +0 -0
  354. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/google/_utils/_message_param_converter.py +0 -0
  355. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/google/_utils/_setup_call.py +0 -0
  356. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/google/_utils/_validate_media_type.py +0 -0
  357. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/google/call_params.py +0 -0
  358. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/google/dynamic_config.py +0 -0
  359. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/google/tool.py +0 -0
  360. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/groq/__init__.py +0 -0
  361. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/groq/_call.py +0 -0
  362. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/groq/_call_kwargs.py +0 -0
  363. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/groq/_utils/__init__.py +0 -0
  364. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/groq/_utils/_convert_common_call_params.py +0 -0
  365. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/groq/_utils/_convert_message_params.py +0 -0
  366. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/groq/_utils/_get_json_output.py +0 -0
  367. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/groq/_utils/_handle_stream.py +0 -0
  368. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/groq/_utils/_message_param_converter.py +0 -0
  369. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/groq/_utils/_setup_call.py +0 -0
  370. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/groq/call_params.py +0 -0
  371. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/groq/call_response.py +0 -0
  372. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/groq/call_response_chunk.py +0 -0
  373. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/groq/dynamic_config.py +0 -0
  374. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/groq/py.typed +0 -0
  375. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/groq/stream.py +0 -0
  376. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/groq/tool.py +0 -0
  377. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/litellm/__init__.py +0 -0
  378. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/litellm/_call.py +0 -0
  379. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/litellm/_utils/__init__.py +0 -0
  380. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/litellm/_utils/_setup_call.py +0 -0
  381. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/litellm/call_params.py +0 -0
  382. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/litellm/call_response.py +0 -0
  383. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/litellm/call_response_chunk.py +0 -0
  384. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/litellm/dynamic_config.py +0 -0
  385. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/litellm/py.typed +0 -0
  386. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/litellm/stream.py +0 -0
  387. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/litellm/tool.py +0 -0
  388. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/mistral/__init__.py +0 -0
  389. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/mistral/_call.py +0 -0
  390. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/mistral/_call_kwargs.py +0 -0
  391. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/mistral/_utils/__init__.py +0 -0
  392. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/mistral/_utils/_convert_common_call_params.py +0 -0
  393. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/mistral/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -0
  394. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/mistral/_utils/_convert_message_params.py +0 -0
  395. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/mistral/_utils/_get_json_output.py +0 -0
  396. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/mistral/_utils/_handle_stream.py +0 -0
  397. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/mistral/_utils/_message_param_converter.py +0 -0
  398. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/mistral/_utils/_setup_call.py +0 -0
  399. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/mistral/call_params.py +0 -0
  400. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/mistral/call_response.py +0 -0
  401. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/mistral/call_response_chunk.py +0 -0
  402. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/mistral/dynamic_config.py +0 -0
  403. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/mistral/py.typed +0 -0
  404. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/mistral/stream.py +0 -0
  405. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/mistral/tool.py +0 -0
  406. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/openai/__init__.py +0 -0
  407. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/openai/_call.py +0 -0
  408. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/openai/_call_kwargs.py +0 -0
  409. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/openai/_utils/__init__.py +0 -0
  410. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/openai/_utils/_convert_common_call_params.py +0 -0
  411. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/openai/_utils/_convert_message_params.py +0 -0
  412. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/openai/_utils/_get_json_output.py +0 -0
  413. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/openai/_utils/_handle_stream.py +0 -0
  414. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/openai/_utils/_message_param_converter.py +0 -0
  415. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/openai/_utils/_setup_call.py +0 -0
  416. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/openai/call_params.py +0 -0
  417. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/openai/call_response.py +0 -0
  418. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/openai/call_response_chunk.py +0 -0
  419. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/openai/dynamic_config.py +0 -0
  420. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/openai/py.typed +0 -0
  421. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/openai/stream.py +0 -0
  422. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/openai/tool.py +0 -0
  423. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/py.typed +0 -0
  424. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/vertex/__init__.py +0 -0
  425. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/vertex/_call.py +0 -0
  426. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/vertex/_call_kwargs.py +0 -0
  427. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/vertex/_utils/__init__.py +0 -0
  428. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/vertex/_utils/_convert_common_call_params.py +0 -0
  429. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/vertex/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -0
  430. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/vertex/_utils/_convert_message_params.py +0 -0
  431. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/vertex/_utils/_get_json_output.py +0 -0
  432. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/vertex/_utils/_handle_stream.py +0 -0
  433. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/vertex/_utils/_message_param_converter.py +0 -0
  434. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/vertex/_utils/_setup_call.py +0 -0
  435. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/vertex/call_params.py +0 -0
  436. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/vertex/call_response.py +0 -0
  437. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/vertex/call_response_chunk.py +0 -0
  438. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/vertex/dynamic_config.py +0 -0
  439. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/vertex/stream.py +0 -0
  440. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/vertex/tool.py +0 -0
  441. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/xai/__init__.py +0 -0
  442. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/xai/_call.py +0 -0
  443. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/xai/_utils/__init__.py +0 -0
  444. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/xai/_utils/_setup_call.py +0 -0
  445. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/xai/call_params.py +0 -0
  446. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/xai/call_response.py +0 -0
  447. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/xai/call_response_chunk.py +0 -0
  448. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/xai/dynamic_config.py +0 -0
  449. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/xai/py.typed +0 -0
  450. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/xai/stream.py +0 -0
  451. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/core/xai/tool.py +0 -0
  452. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/experimental/graphs/__init__.py +0 -0
  453. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/experimental/graphs/finite_state_machine.py +0 -0
  454. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/integrations/__init__.py +0 -0
  455. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/integrations/_middleware_factory.py +0 -0
  456. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/integrations/langfuse/__init__.py +0 -0
  457. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/integrations/langfuse/_utils.py +0 -0
  458. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/integrations/langfuse/_with_langfuse.py +0 -0
  459. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/integrations/logfire/__init__.py +0 -0
  460. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/integrations/logfire/_utils.py +0 -0
  461. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/integrations/logfire/_with_logfire.py +0 -0
  462. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/integrations/otel/__init__.py +0 -0
  463. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/integrations/otel/_utils.py +0 -0
  464. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/integrations/otel/_with_hyperdx.py +0 -0
  465. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/integrations/otel/_with_otel.py +0 -0
  466. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/integrations/tenacity.py +0 -0
  467. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/llm/__init__.py +0 -0
  468. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/llm/_call.py +0 -0
  469. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/llm/_context.py +0 -0
  470. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/llm/_override.py +0 -0
  471. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/llm/_protocols.py +0 -0
  472. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/llm/_response_metaclass.py +0 -0
  473. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/llm/call_response.py +0 -0
  474. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/llm/call_response_chunk.py +0 -0
  475. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/llm/stream.py +0 -0
  476. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/llm/tool.py +0 -0
  477. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/mcp/__init__.py +0 -0
  478. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/mcp/_utils.py +0 -0
  479. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/mcp/client.py +0 -0
  480. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/mcp/server.py +0 -0
  481. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/mcp/tools.py +0 -0
  482. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/py.typed +0 -0
  483. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/retries/__init__.py +0 -0
  484. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/retries/fallback.py +0 -0
  485. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/retries/tenacity.py +0 -0
  486. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/tools/__init__.py +0 -0
  487. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/tools/base.py +0 -0
  488. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/tools/system/__init__.py +0 -0
  489. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/tools/system/_docker_operation.py +0 -0
  490. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/tools/system/_file_system.py +0 -0
  491. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/tools/web/__init__.py +0 -0
  492. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/tools/web/_duckduckgo.py +0 -0
  493. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/tools/web/_httpx.py +0 -0
  494. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/tools/web/_parse_url_content.py +0 -0
  495. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/tools/web/_requests.py +0 -0
  496. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/v0/__init__.py +0 -0
  497. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/v0/anthropic.py +0 -0
  498. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/v0/base/__init__.py +0 -0
  499. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/v0/base/calls.py +0 -0
  500. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/v0/base/extractors.py +0 -0
  501. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/v0/base/ops_utils.py +0 -0
  502. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/v0/base/prompts.py +0 -0
  503. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/v0/base/types.py +0 -0
  504. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/v0/base/utils.py +0 -0
  505. {mirascope-1.24.2 → mirascope-1.25.0}/mirascope/v0/openai.py +0 -0
  506. {mirascope-1.24.2 → mirascope-1.25.0}/tests/__init__.py +0 -0
  507. {mirascope-1.24.2 → mirascope-1.25.0}/tests/conftest.py +0 -0
  508. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/__init__.py +0 -0
  509. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/anthropic/__init__.py +0 -0
  510. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/anthropic/_utils/__init__.py +0 -0
  511. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/anthropic/_utils/test_convert_common_call_params.py +0 -0
  512. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/anthropic/_utils/test_convert_message_params.py +0 -0
  513. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/anthropic/_utils/test_get_json_output.py +0 -0
  514. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/anthropic/_utils/test_handle_stream.py +0 -0
  515. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/anthropic/_utils/test_message_param_converter.py +0 -0
  516. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/anthropic/test_call.py +0 -0
  517. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/anthropic/test_tool.py +0 -0
  518. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/azure/__init__.py +0 -0
  519. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/azure/_utils/__init__.py +0 -0
  520. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/azure/_utils/test_convert_common_call_params.py +0 -0
  521. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/azure/_utils/test_convert_message_params.py +0 -0
  522. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/azure/_utils/test_get_credential.py +0 -0
  523. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/azure/_utils/test_get_json_output.py +0 -0
  524. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/azure/_utils/test_handle_stream.py +0 -0
  525. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/azure/_utils/test_message_param_converter.py +0 -0
  526. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/azure/_utils/test_setup_call.py +0 -0
  527. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/azure/test_call.py +0 -0
  528. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/azure/test_call_response.py +0 -0
  529. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/azure/test_call_response_chunk.py +0 -0
  530. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/azure/test_stream.py +0 -0
  531. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/azure/test_tool.py +0 -0
  532. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/__init__.py +0 -0
  533. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/_utils/__init__.py +0 -0
  534. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/_utils/test_base_type.py +0 -0
  535. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/_utils/test_convert_base_model_to_base_tool.py +0 -0
  536. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/_utils/test_convert_base_type_to_base_tool.py +0 -0
  537. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/_utils/test_convert_function_to_base_tool.py +0 -0
  538. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/_utils/test_convert_messages_to_message_params.py +0 -0
  539. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/_utils/test_extract_tool_return.py +0 -0
  540. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/_utils/test_format_template.py +0 -0
  541. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/_utils/test_get_audio_type.py +0 -0
  542. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/_utils/test_get_create_fn_or_async_create_fn.py +0 -0
  543. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/_utils/test_get_document_type.py +0 -0
  544. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/_utils/test_get_dynamic_configuration.py +0 -0
  545. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/_utils/test_get_fields_from_call_args.py +0 -0
  546. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/_utils/test_get_fn_args.py +0 -0
  547. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/_utils/test_get_image_dimensions.py +0 -0
  548. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/_utils/test_get_image_type.py +0 -0
  549. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/_utils/test_get_metadata.py +0 -0
  550. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/_utils/test_get_possible_user_message_param.py +0 -0
  551. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/_utils/test_get_prompt_template.py +0 -0
  552. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/_utils/test_get_template_values.py +0 -0
  553. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/_utils/test_get_template_variables.py +0 -0
  554. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/_utils/test_get_unsupported_tool_config_keys.py +0 -0
  555. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/_utils/test_json_mode_content.py +0 -0
  556. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/_utils/test_message_decorator.py +0 -0
  557. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/_utils/test_parse_content_template.py +0 -0
  558. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/_utils/test_parse_prompt_messages.py +0 -0
  559. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/_utils/test_pil_image_to_bytes.py +0 -0
  560. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/_utils/test_setup_call.py +0 -0
  561. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/_utils/test_setup_extract_tool.py +0 -0
  562. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/conftest.py +0 -0
  563. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/test_call_factory.py +0 -0
  564. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/test_call_response.py +0 -0
  565. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/test_call_response_chunk.py +0 -0
  566. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/test_create.py +0 -0
  567. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/test_extract.py +0 -0
  568. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/test_extract_with_tools.py +0 -0
  569. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/test_merge_decorators.py +0 -0
  570. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/test_partial.py +0 -0
  571. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/test_prompt.py +0 -0
  572. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/test_stream.py +0 -0
  573. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/test_structured_stream.py +0 -0
  574. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/test_tool.py +0 -0
  575. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/base/test_toolkit.py +0 -0
  576. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/bedrock/__init__.py +0 -0
  577. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/bedrock/_utils/__init__.py +0 -0
  578. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/bedrock/_utils/test_convert_common_call_params.py +0 -0
  579. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/bedrock/_utils/test_convert_message_params.py +0 -0
  580. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/bedrock/_utils/test_get_json_output.py +0 -0
  581. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/bedrock/_utils/test_handle_stream.py +0 -0
  582. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/bedrock/_utils/test_message_param_converter.py +0 -0
  583. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/bedrock/_utils/test_setup_call.py +0 -0
  584. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/bedrock/conftest.py +0 -0
  585. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/bedrock/test_call.py +0 -0
  586. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/bedrock/test_call_response.py +0 -0
  587. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/bedrock/test_call_response_chunk.py +0 -0
  588. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/bedrock/test_stream.py +0 -0
  589. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/bedrock/test_tool.py +0 -0
  590. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/cohere/__init__.py +0 -0
  591. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/cohere/_utils/__init__.py +0 -0
  592. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/cohere/_utils/test_convert_common_call_params.py +0 -0
  593. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/cohere/_utils/test_convert_message_params.py +0 -0
  594. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/cohere/_utils/test_get_json_output.py +0 -0
  595. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/cohere/_utils/test_handle_stream.py +0 -0
  596. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/cohere/_utils/test_message_param_converter.py +0 -0
  597. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/cohere/_utils/test_setup_call.py +0 -0
  598. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/cohere/test_call.py +0 -0
  599. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/cohere/test_call_response.py +0 -0
  600. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/cohere/test_call_response_chunk.py +0 -0
  601. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/cohere/test_stream.py +0 -0
  602. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/cohere/test_tool.py +0 -0
  603. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/costs/__init__.py +0 -0
  604. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/costs/test_anthropic_calculate_cost.py +0 -0
  605. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/costs/test_azure_calculate_cost.py +0 -0
  606. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/costs/test_bedrock_calculate_cost.py +0 -0
  607. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/costs/test_calculation_cost.py +0 -0
  608. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/costs/test_cohere_calculate_cost.py +0 -0
  609. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/costs/test_gemini_calculate_cost.py +0 -0
  610. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/costs/test_google_calculate_cost.py +0 -0
  611. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/costs/test_groq_calculate_cost.py +0 -0
  612. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/costs/test_mistral_calculate_cost.py +0 -0
  613. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/costs/test_openai_calculate_cost.py +0 -0
  614. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/costs/test_vertex_calculate_cost.py +0 -0
  615. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/costs/test_xai_calculate_cost.py +0 -0
  616. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/gemini/__init__.py +0 -0
  617. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/gemini/_utils/__init__.py +0 -0
  618. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/gemini/_utils/test_convert_common_call_params.py +0 -0
  619. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/gemini/_utils/test_convert_message_params.py +0 -0
  620. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/gemini/_utils/test_get_json_output.py +0 -0
  621. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/gemini/_utils/test_handle_stream.py +0 -0
  622. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/gemini/_utils/test_message_param_converter.py +0 -0
  623. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/gemini/_utils/test_setup_call.py +0 -0
  624. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/gemini/test_call.py +0 -0
  625. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/gemini/test_call_response.py +0 -0
  626. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/gemini/test_call_response_chunk.py +0 -0
  627. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/gemini/test_stream.py +0 -0
  628. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/gemini/test_tool.py +0 -0
  629. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/google/__init__.py +0 -0
  630. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/google/_utils/__init__.py +0 -0
  631. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/google/_utils/test_convert_common_call_params.py +0 -0
  632. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/google/_utils/test_convert_message_params.py +0 -0
  633. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/google/_utils/test_get_json_output.py +0 -0
  634. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/google/_utils/test_handle_stream.py +0 -0
  635. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/google/_utils/test_message_param_converter.py +0 -0
  636. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/google/_utils/test_setup_call.py +0 -0
  637. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/google/test_call.py +0 -0
  638. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/google/test_tool.py +0 -0
  639. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/groq/__init__.py +0 -0
  640. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/groq/_utils/__init__.py +0 -0
  641. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/groq/_utils/test_convert_common_call_params.py +0 -0
  642. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/groq/_utils/test_convert_message_params.py +0 -0
  643. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/groq/_utils/test_get_json_output.py +0 -0
  644. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/groq/_utils/test_handle_stream.py +0 -0
  645. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/groq/_utils/test_message_param_converter.py +0 -0
  646. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/groq/_utils/test_setup_call.py +0 -0
  647. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/groq/test_call.py +0 -0
  648. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/groq/test_call_response.py +0 -0
  649. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/groq/test_call_response_chunk.py +0 -0
  650. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/groq/test_stream.py +0 -0
  651. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/groq/test_tool.py +0 -0
  652. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/litellm/__init__.py +0 -0
  653. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/litellm/_utils/__init__.py +0 -0
  654. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/litellm/_utils/test_setup_call.py +0 -0
  655. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/litellm/test_call.py +0 -0
  656. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/litellm/test_call_response.py +0 -0
  657. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/litellm/test_stream.py +0 -0
  658. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/mistral/__init__.py +0 -0
  659. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/mistral/_utils/__init__.py +0 -0
  660. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/mistral/_utils/test_convert_common_call_params.py +0 -0
  661. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/mistral/_utils/test_convert_message_params.py +0 -0
  662. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/mistral/_utils/test_get_json_output.py +0 -0
  663. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/mistral/_utils/test_handle_stream.py +0 -0
  664. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/mistral/_utils/test_message_param_converter.py +0 -0
  665. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/mistral/_utils/test_setup_call.py +0 -0
  666. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/mistral/test_call.py +0 -0
  667. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/mistral/test_call_response.py +0 -0
  668. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/mistral/test_call_response_chunk.py +0 -0
  669. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/mistral/test_stream.py +0 -0
  670. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/mistral/test_tool.py +0 -0
  671. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/openai/__init__.py +0 -0
  672. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/openai/_utils/__init__.py +0 -0
  673. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/openai/_utils/test_convert_common_call_params.py +0 -0
  674. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/openai/_utils/test_convert_message_params.py +0 -0
  675. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/openai/_utils/test_get_json_output.py +0 -0
  676. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/openai/_utils/test_handle_stream.py +0 -0
  677. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/openai/_utils/test_message_param_converter.py +0 -0
  678. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/openai/_utils/test_setup_call.py +0 -0
  679. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/openai/test_call.py +0 -0
  680. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/openai/test_call_response.py +0 -0
  681. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/openai/test_call_response_chunk.py +0 -0
  682. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/openai/test_stream.py +0 -0
  683. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/openai/test_tool.py +0 -0
  684. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/vertex/__init__.py +0 -0
  685. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/vertex/_utils/__init__.py +0 -0
  686. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/vertex/_utils/test_convert_common_call_params.py +0 -0
  687. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/vertex/_utils/test_convert_message_params.py +0 -0
  688. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/vertex/_utils/test_get_json_output.py +0 -0
  689. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/vertex/_utils/test_handle_stream.py +0 -0
  690. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/vertex/_utils/test_message_param_converter.py +0 -0
  691. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/vertex/_utils/test_setup_call.py +0 -0
  692. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/vertex/test_call.py +0 -0
  693. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/vertex/test_call_response.py +0 -0
  694. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/vertex/test_call_response_chunk.py +0 -0
  695. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/vertex/test_stream.py +0 -0
  696. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/vertex/test_tool.py +0 -0
  697. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/xai/__init__.py +0 -0
  698. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/xai/_utils/__init__.py +0 -0
  699. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/xai/_utils/test_setup_call.py +0 -0
  700. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/xai/test_call.py +0 -0
  701. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/xai/test_call_response.py +0 -0
  702. {mirascope-1.24.2 → mirascope-1.25.0}/tests/core/xai/test_stream.py +0 -0
  703. {mirascope-1.24.2 → mirascope-1.25.0}/tests/integrations/__init__.py +0 -0
  704. {mirascope-1.24.2 → mirascope-1.25.0}/tests/integrations/langfuse/__init__.py +0 -0
  705. {mirascope-1.24.2 → mirascope-1.25.0}/tests/integrations/langfuse/test_utils.py +0 -0
  706. {mirascope-1.24.2 → mirascope-1.25.0}/tests/integrations/langfuse/test_with_langfuse.py +0 -0
  707. {mirascope-1.24.2 → mirascope-1.25.0}/tests/integrations/logfire/__init__.py +0 -0
  708. {mirascope-1.24.2 → mirascope-1.25.0}/tests/integrations/logfire/test_utils.py +0 -0
  709. {mirascope-1.24.2 → mirascope-1.25.0}/tests/integrations/logfire/test_with_logfire.py +0 -0
  710. {mirascope-1.24.2 → mirascope-1.25.0}/tests/integrations/otel/__init__.py +0 -0
  711. {mirascope-1.24.2 → mirascope-1.25.0}/tests/integrations/otel/test_utils.py +0 -0
  712. {mirascope-1.24.2 → mirascope-1.25.0}/tests/integrations/otel/test_with_hyperdx.py +0 -0
  713. {mirascope-1.24.2 → mirascope-1.25.0}/tests/integrations/otel/test_with_otel.py +0 -0
  714. {mirascope-1.24.2 → mirascope-1.25.0}/tests/integrations/test_middleware_factory.py +0 -0
  715. {mirascope-1.24.2 → mirascope-1.25.0}/tests/llm/__init__.py +0 -0
  716. {mirascope-1.24.2 → mirascope-1.25.0}/tests/llm/test_call.py +0 -0
  717. {mirascope-1.24.2 → mirascope-1.25.0}/tests/llm/test_call_response.py +0 -0
  718. {mirascope-1.24.2 → mirascope-1.25.0}/tests/llm/test_call_response_chunk.py +0 -0
  719. {mirascope-1.24.2 → mirascope-1.25.0}/tests/llm/test_context.py +0 -0
  720. {mirascope-1.24.2 → mirascope-1.25.0}/tests/llm/test_override.py +0 -0
  721. {mirascope-1.24.2 → mirascope-1.25.0}/tests/llm/test_response_metaclass.py +0 -0
  722. {mirascope-1.24.2 → mirascope-1.25.0}/tests/llm/test_stream.py +0 -0
  723. {mirascope-1.24.2 → mirascope-1.25.0}/tests/llm/test_tool.py +0 -0
  724. {mirascope-1.24.2 → mirascope-1.25.0}/tests/mcp/__init__.py +0 -0
  725. {mirascope-1.24.2 → mirascope-1.25.0}/tests/mcp/test_client.py +0 -0
  726. {mirascope-1.24.2 → mirascope-1.25.0}/tests/mcp/test_server.py +0 -0
  727. {mirascope-1.24.2 → mirascope-1.25.0}/tests/retries/__init__.py +0 -0
  728. {mirascope-1.24.2 → mirascope-1.25.0}/tests/retries/test_fallback.py +0 -0
  729. {mirascope-1.24.2 → mirascope-1.25.0}/tests/retries/test_tenacity.py +0 -0
  730. {mirascope-1.24.2 → mirascope-1.25.0}/tests/tools/__init__.py +0 -0
  731. {mirascope-1.24.2 → mirascope-1.25.0}/tests/tools/test_base.py +0 -0
  732. {mirascope-1.24.2 → mirascope-1.25.0}/tests/tools/test_docker_operation_toolkit.py +0 -0
  733. {mirascope-1.24.2 → mirascope-1.25.0}/tests/tools/test_filesystem_toolkit.py +0 -0
  734. {mirascope-1.24.2 → mirascope-1.25.0}/tests/tools/web/__init__.py +0 -0
  735. {mirascope-1.24.2 → mirascope-1.25.0}/tests/tools/web/test_duckduckgo.py +0 -0
  736. {mirascope-1.24.2 → mirascope-1.25.0}/tests/tools/web/test_httpx.py +0 -0
  737. {mirascope-1.24.2 → mirascope-1.25.0}/tests/tools/web/test_parse_url_content.py +0 -0
  738. {mirascope-1.24.2 → mirascope-1.25.0}/tests/tools/web/test_requests.py +0 -0
@@ -0,0 +1,10 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "WebFetch(domain:docs.anthropic.com)",
5
+ "Bash(ls:*)",
6
+ "Bash(rg:*)"
7
+ ],
8
+ "deny": []
9
+ }
10
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mirascope
3
- Version: 1.24.2
3
+ Version: 1.25.0
4
4
  Summary: LLM abstractions that aren't obstructions
5
5
  Project-URL: Homepage, https://mirascope.com
6
6
  Project-URL: Documentation, https://mirascope.com/WELCOME
@@ -0,0 +1,70 @@
1
+ """Centralized thinking-related imports and compatibility handling for Anthropic."""
2
+
3
+ from typing import TYPE_CHECKING, Literal
4
+
5
+ from pydantic import BaseModel
6
+ from typing_extensions import TypedDict
7
+
8
+
9
+ # Always define the stubs with underscore names
10
+ class _ThinkingConfigParam(TypedDict):
11
+ type: Literal["enabled"]
12
+ budget_tokens: int
13
+
14
+
15
+ class _ThinkingBlock(BaseModel):
16
+ signature: str
17
+ thinking: str
18
+ type: Literal["thinking"]
19
+
20
+
21
+ class _ThinkingDelta(BaseModel):
22
+ thinking: str
23
+ type: Literal["thinking_delta"]
24
+
25
+
26
+ class _SignatureDelta(BaseModel):
27
+ signature: str
28
+ type: Literal["signature_delta"]
29
+
30
+
31
+ HAS_THINKING_SUPPORT = True
32
+
33
+ # Define the public names based on what's available
34
+ if TYPE_CHECKING:
35
+ # For static analysis, always use our stubs so types are consistent
36
+ ThinkingConfigParam = _ThinkingConfigParam
37
+ ThinkingBlock = _ThinkingBlock
38
+ ThinkingDelta = _ThinkingDelta
39
+ SignatureDelta = _SignatureDelta
40
+ else:
41
+ # At runtime, use real types if available, otherwise stubs
42
+ try:
43
+ from anthropic.types import ( # pyright: ignore [reportAttributeAccessIssue]
44
+ ThinkingBlock,
45
+ ThinkingDelta,
46
+ )
47
+ from anthropic.types.signature_delta import (
48
+ SignatureDelta, # pyright: ignore [reportMissingImports]
49
+ )
50
+ from anthropic.types.thinking_config_param import (
51
+ ThinkingConfigParam, # pyright: ignore [reportMissingImports]
52
+ )
53
+
54
+ HAS_THINKING_SUPPORT = True
55
+
56
+ except ImportError: # pragma: no cover
57
+ ThinkingConfigParam = _ThinkingConfigParam
58
+ ThinkingBlock = _ThinkingBlock
59
+ ThinkingDelta = _ThinkingDelta
60
+ SignatureDelta = _SignatureDelta
61
+ HAS_THINKING_SUPPORT = False
62
+
63
+
64
+ __all__ = [
65
+ "HAS_THINKING_SUPPORT",
66
+ "SignatureDelta",
67
+ "ThinkingBlock",
68
+ "ThinkingConfigParam",
69
+ "ThinkingDelta",
70
+ ]
@@ -19,6 +19,7 @@ from ...base import BaseMessageParam, BaseTool, _utils
19
19
  from ...base._utils import AsyncCreateFn, CreateFn
20
20
  from ...base.stream_config import StreamConfig
21
21
  from .._call_kwargs import AnthropicCallKwargs
22
+ from .._thinking import HAS_THINKING_SUPPORT
22
23
  from ..call_params import AnthropicCallParams
23
24
  from ..dynamic_config import AnthropicDynamicConfig, AsyncAnthropicDynamicConfig
24
25
  from ..tool import AnthropicTool
@@ -95,6 +96,15 @@ def setup_call(
95
96
  list[type[AnthropicTool]] | None,
96
97
  AnthropicCallKwargs,
97
98
  ]:
99
+ thinking_enabled = call_params.get("thinking") is not None
100
+
101
+ # Validate thinking parameter before processing
102
+ if thinking_enabled and not HAS_THINKING_SUPPORT:
103
+ raise ValueError( # pragma: no cover
104
+ "Thinking parameter requires anthropic>=0.47.0. "
105
+ "Please upgrade: pip install 'anthropic>=0.47.0'"
106
+ )
107
+
98
108
  prompt_template, messages, tool_types, base_call_kwargs = _utils.setup_call(
99
109
  fn,
100
110
  fn_args,
@@ -111,7 +121,9 @@ def setup_call(
111
121
  if messages[0]["role"] == "system":
112
122
  call_kwargs["system"] = messages.pop(0)["content"] # pyright: ignore [reportGeneralTypeIssues]
113
123
 
114
- if json_mode:
124
+ use_json_mode = json_mode or (response_model and thinking_enabled)
125
+
126
+ if use_json_mode:
115
127
  json_mode_content = _utils.json_mode_content(response_model)
116
128
  if isinstance(messages[-1]["content"], str):
117
129
  messages[-1]["content"] += json_mode_content
@@ -11,6 +11,7 @@ from httpx import Timeout
11
11
  from typing_extensions import NotRequired
12
12
 
13
13
  from ..base import BaseCallParams
14
+ from ._thinking import ThinkingConfigParam
14
15
 
15
16
 
16
17
  class AnthropicCallParams(BaseCallParams):
@@ -21,6 +22,7 @@ class AnthropicCallParams(BaseCallParams):
21
22
  Attributes:
22
23
  max_tokens: ...
23
24
  tool_choice: ...
25
+ thinking: ...
24
26
  metadata: ...
25
27
  stop_sequences: ...
26
28
  temperature: ...
@@ -32,6 +34,7 @@ class AnthropicCallParams(BaseCallParams):
32
34
  extra_headers: NotRequired[dict[str, str] | None]
33
35
  max_tokens: int
34
36
  tool_choice: NotRequired[ToolChoice | None]
37
+ thinking: NotRequired[ThinkingConfigParam | None]
35
38
  metadata: NotRequired[Metadata | None]
36
39
  stop_sequences: NotRequired[list[str] | None]
37
40
  system: NotRequired[str | Iterable[TextBlockParam] | None]
@@ -71,9 +71,29 @@ class AnthropicCallResponse(
71
71
  @computed_field
72
72
  @property
73
73
  def content(self) -> str:
74
- """Returns the string text of the 0th text block."""
75
- block = self.response.content[0]
76
- return block.text if block.type == "text" else ""
74
+ """Returns the text content from the first text block."""
75
+ for block in self.response.content:
76
+ if block.type == "text":
77
+ return block.text
78
+ return ""
79
+
80
+ @computed_field
81
+ @property
82
+ def thinking(self) -> str | None:
83
+ """Returns the thinking content from the first thinking block."""
84
+ for block in self.response.content:
85
+ if block.type == "thinking":
86
+ return block.thinking
87
+ return None
88
+
89
+ @computed_field
90
+ @property
91
+ def signature(self) -> str | None:
92
+ """Returns the signature from the first thinking block."""
93
+ for block in self.response.content:
94
+ if block.type == "thinking":
95
+ return block.signature
96
+ return None
77
97
 
78
98
  @computed_field
79
99
  @property
@@ -61,6 +61,26 @@ class AnthropicCallResponseChunk(
61
61
  else ""
62
62
  )
63
63
 
64
+ @property
65
+ def thinking(self) -> str:
66
+ """Returns the thinking content from thinking deltas."""
67
+ return (
68
+ self.chunk.delta.thinking
69
+ if self.chunk.type == "content_block_delta"
70
+ and self.chunk.delta.type == "thinking_delta"
71
+ else ""
72
+ )
73
+
74
+ @property
75
+ def signature(self) -> str:
76
+ """Returns the signature content from signature deltas."""
77
+ return (
78
+ self.chunk.delta.signature
79
+ if self.chunk.type == "content_block_delta"
80
+ and self.chunk.delta.type == "signature_delta"
81
+ else ""
82
+ )
83
+
64
84
  @property
65
85
  def finish_reasons(self) -> list[FinishReason] | None:
66
86
  """Returns the finish reason of the response."""
@@ -3,6 +3,9 @@
3
3
  usage docs: learn/streams.md
4
4
  """
5
5
 
6
+ from collections.abc import AsyncGenerator, Generator
7
+ from typing import Any
8
+
6
9
  from anthropic.types import (
7
10
  Message,
8
11
  MessageParam,
@@ -16,8 +19,11 @@ from anthropic.types.text_block_param import TextBlockParam
16
19
  from anthropic.types.tool_use_block_param import ToolUseBlockParam
17
20
  from pydantic import BaseModel
18
21
 
22
+ from ..base.call_kwargs import BaseCallKwargs
23
+ from ..base.metadata import Metadata
19
24
  from ..base.stream import BaseStream
20
25
  from ..base.types import CostMetadata
26
+ from ._thinking import ThinkingBlock
21
27
  from .call_params import AnthropicCallParams
22
28
  from .call_response import AnthropicCallResponse
23
29
  from .call_response_chunk import AnthropicCallResponseChunk
@@ -64,6 +70,47 @@ class AnthropicStream(
64
70
 
65
71
  _provider = "anthropic"
66
72
 
73
+ def __init__(
74
+ self,
75
+ *,
76
+ stream: Generator[
77
+ tuple[AnthropicCallResponseChunk, AnthropicTool | None], None, None
78
+ ]
79
+ | AsyncGenerator[tuple[AnthropicCallResponseChunk, AnthropicTool | None], None],
80
+ metadata: Metadata,
81
+ tool_types: list[type[AnthropicTool]] | None,
82
+ call_response_type: type[AnthropicCallResponse],
83
+ model: str,
84
+ prompt_template: str | None,
85
+ fn_args: dict[str, Any],
86
+ dynamic_config: AsyncAnthropicDynamicConfig | AnthropicDynamicConfig,
87
+ messages: list[MessageParam],
88
+ call_params: AnthropicCallParams,
89
+ call_kwargs: BaseCallKwargs[ToolParam],
90
+ ) -> None:
91
+ """Initialize AnthropicStream with thinking content tracking."""
92
+ super().__init__(
93
+ stream=stream,
94
+ metadata=metadata,
95
+ tool_types=tool_types,
96
+ call_response_type=call_response_type,
97
+ model=model,
98
+ prompt_template=prompt_template,
99
+ fn_args=fn_args,
100
+ dynamic_config=dynamic_config,
101
+ messages=messages,
102
+ call_params=call_params,
103
+ call_kwargs=call_kwargs,
104
+ )
105
+ self.thinking = ""
106
+ self.signature = ""
107
+
108
+ def _update_properties(self, chunk: AnthropicCallResponseChunk) -> None:
109
+ """Updates the properties of the stream, including thinking content."""
110
+ super()._update_properties(chunk)
111
+ self.thinking += chunk.thinking
112
+ self.signature += chunk.signature
113
+
67
114
  def _construct_message_param(
68
115
  self, tool_calls: list[ToolUseBlock] | None = None, content: str | None = None
69
116
  ) -> MessageParam:
@@ -102,6 +149,16 @@ class AnthropicStream(
102
149
 
103
150
  content_blocks: list[ContentBlock] = []
104
151
 
152
+ # Add thinking block first if we have thinking content
153
+ if hasattr(self, "thinking") and self.thinking:
154
+ content_blocks.append(
155
+ ThinkingBlock( # pyright: ignore [reportArgumentType]
156
+ type="thinking",
157
+ thinking=self.thinking,
158
+ signature=getattr(self, "signature", ""),
159
+ )
160
+ )
161
+
105
162
  if isinstance(self.message_param["content"], str):
106
163
  content_blocks.append(
107
164
  TextBlock(text=self.message_param["content"], type="text")
@@ -13,6 +13,7 @@ from google.genai.types import (
13
13
  FunctionResponseDict,
14
14
  GenerateContentResponse,
15
15
  GenerateContentResponseUsageMetadata,
16
+ Part,
16
17
  PartDict,
17
18
  # Import manually SchemaDict to avoid Pydantic error
18
19
  SchemaDict, # noqa: F401
@@ -72,11 +73,33 @@ class GoogleCallResponse(
72
73
 
73
74
  _provider = "google"
74
75
 
76
+ def _parts(self) -> list[Part]:
77
+ """Returns the parts of the 0th candidate."""
78
+ if (
79
+ not (candidates := self.response.candidates)
80
+ or not (content := candidates[0].content)
81
+ or not (parts := content.parts)
82
+ ):
83
+ return []
84
+ return parts
85
+
75
86
  @computed_field
76
87
  @property
77
88
  def content(self) -> str:
78
89
  """Returns the contained string content for the 0th choice."""
79
- return self.response.candidates[0].content.parts[0].text # pyright: ignore [reportOptionalSubscript, reportReturnType, reportOptionalMemberAccess, reportOptionalIterable]
90
+ for part in self._parts():
91
+ if not part.thought and part.text:
92
+ return part.text
93
+ return ""
94
+
95
+ @computed_field
96
+ @property
97
+ def thinking(self) -> str | None:
98
+ """Returns the thought content from the first thought part"""
99
+ for part in self._parts():
100
+ if part.thought and part.text:
101
+ return part.text
102
+ return None
80
103
 
81
104
  @computed_field
82
105
  @property
@@ -52,10 +52,28 @@ class GoogleCallResponseChunk(
52
52
  not (candidates := self.chunk.candidates)
53
53
  or not (content := candidates[0].content)
54
54
  or not (parts := content.parts)
55
- or not (text := parts[0].text)
56
55
  ):
57
56
  return ""
58
- return text
57
+
58
+ for part in parts:
59
+ if not part.thought and part.text:
60
+ return part.text
61
+ return ""
62
+
63
+ @property
64
+ def thinking(self) -> str:
65
+ """Returns the thinking content from thinking parts."""
66
+ if (
67
+ not (candidates := self.chunk.candidates)
68
+ or not (content := candidates[0].content)
69
+ or not (parts := content.parts)
70
+ ):
71
+ return ""
72
+
73
+ for part in parts:
74
+ if part.thought and part.text:
75
+ return part.text
76
+ return ""
59
77
 
60
78
  @property
61
79
  def finish_reasons(self) -> list[GoogleFinishReason]:
@@ -3,7 +3,8 @@
3
3
  usage docs: learn/streams.md
4
4
  """
5
5
 
6
- from typing import cast
6
+ from collections.abc import AsyncGenerator, Generator
7
+ from typing import Any, cast
7
8
 
8
9
  from google.genai.types import (
9
10
  Candidate,
@@ -19,6 +20,8 @@ from google.genai.types import (
19
20
  Tool,
20
21
  )
21
22
 
23
+ from ..base.call_kwargs import BaseCallKwargs
24
+ from ..base.metadata import Metadata
22
25
  from ..base.stream import BaseStream
23
26
  from ..base.types import CostMetadata
24
27
  from .call_params import GoogleCallParams
@@ -64,6 +67,43 @@ class GoogleStream(
64
67
 
65
68
  _provider = "google"
66
69
 
70
+ def __init__(
71
+ self,
72
+ *,
73
+ stream: Generator[tuple[GoogleCallResponseChunk, GoogleTool | None], None, None]
74
+ | AsyncGenerator[tuple[GoogleCallResponseChunk, GoogleTool | None], None],
75
+ metadata: Metadata,
76
+ tool_types: list[type[GoogleTool]] | None,
77
+ call_response_type: type[GoogleCallResponse],
78
+ model: str,
79
+ prompt_template: str | None,
80
+ fn_args: dict[str, Any],
81
+ dynamic_config: GoogleDynamicConfig,
82
+ messages: list[ContentListUnion | ContentListUnionDict],
83
+ call_params: GoogleCallParams,
84
+ call_kwargs: BaseCallKwargs[Tool],
85
+ ) -> None:
86
+ """Initialize GoogleStream with thinking content tracking."""
87
+ super().__init__(
88
+ stream=stream,
89
+ metadata=metadata,
90
+ tool_types=tool_types,
91
+ call_response_type=call_response_type,
92
+ model=model,
93
+ prompt_template=prompt_template,
94
+ fn_args=fn_args,
95
+ dynamic_config=dynamic_config,
96
+ messages=messages,
97
+ call_params=call_params,
98
+ call_kwargs=call_kwargs,
99
+ )
100
+ self.thinking = ""
101
+
102
+ def _update_properties(self, chunk: GoogleCallResponseChunk) -> None:
103
+ """Updates the properties of the stream, including thinking content."""
104
+ super()._update_properties(chunk)
105
+ self.thinking += chunk.thinking
106
+
67
107
  def _construct_message_param(
68
108
  self, tool_calls: list[FunctionCall] | None = None, content: str | None = None
69
109
  ) -> ContentDict:
@@ -103,6 +143,22 @@ class GoogleStream(
103
143
  total_token_count = int(candidates_token_count or 0) + int(
104
144
  prompt_token_count or 0
105
145
  )
146
+
147
+ parts: list[PartDict] = []
148
+
149
+ # Add thinking part first if we have thinking content
150
+ if self.thinking:
151
+ parts.append({"text": self.thinking, "thought": True})
152
+
153
+ for pd in self.message_param.get("parts") or []:
154
+ if pd.get("text") == "":
155
+ # These parts are generated based only on chunk content;
156
+ # thinking parts have empty content and are reconstructed separately.
157
+ # Skip this so the thinking parts aren't duplicated.
158
+ continue
159
+ else:
160
+ parts.append(pd)
161
+
106
162
  response = GenerateContentResponse(
107
163
  candidates=[
108
164
  Candidate(
@@ -111,7 +167,7 @@ class GoogleStream(
111
167
  else FinishReason.STOP,
112
168
  content=Content(
113
169
  role=self.message_param["role"], # pyright: ignore [reportTypedDictNotRequiredAccess]
114
- parts=self.message_param["parts"], # pyright: ignore [reportTypedDictNotRequiredAccess, reportArgumentType]
170
+ parts=parts, # pyright: ignore [reportArgumentType]
115
171
  ),
116
172
  )
117
173
  ],
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mirascope"
3
- version = "1.24.2"
3
+ version = "1.25.0"
4
4
  description = "LLM abstractions that aren't obstructions"
5
5
  readme = "README.md"
6
6
  license = { file = "LICENSE" }
@@ -179,3 +179,45 @@ def test_setup_call_extract(
179
179
  "type": "tool",
180
180
  "name": tool_types[0]._name(),
181
181
  }
182
+
183
+
184
+ @patch(
185
+ "mirascope.core.anthropic._utils._setup_call.convert_message_params",
186
+ new_callable=MagicMock,
187
+ )
188
+ @patch("mirascope.core.anthropic._utils._setup_call._utils", new_callable=MagicMock)
189
+ def test_setup_call_thinking_with_response_model(
190
+ mock_utils: MagicMock,
191
+ mock_convert_message_params: MagicMock,
192
+ mock_base_setup_call: MagicMock,
193
+ ) -> None:
194
+ """Tests that response_model with thinking automatically uses JSON mode."""
195
+ mock_utils.setup_call = mock_base_setup_call
196
+ mock_utils.json_mode_content = MagicMock(return_value="\n\njson_instructions")
197
+ mock_base_setup_call.return_value[1] = [{"role": "user", "content": "test message"}]
198
+ mock_base_setup_call.return_value[2] = [
199
+ MagicMock(spec=AnthropicTool, __name__="tool")
200
+ ]
201
+ mock_base_setup_call.return_value[3] = {"max_tokens": 1000}
202
+ mock_convert_message_params.side_effect = lambda x: x
203
+
204
+ _, _, messages, tool_types, call_kwargs = setup_call(
205
+ model="claude-3-5-sonnet-20240620",
206
+ client=None,
207
+ fn=MagicMock(),
208
+ fn_args={},
209
+ dynamic_config=None,
210
+ tools=None,
211
+ json_mode=False,
212
+ call_params={
213
+ "max_tokens": 1000,
214
+ "thinking": {"type": "enabled", "budget_tokens": 1000},
215
+ },
216
+ response_model=BaseModel,
217
+ stream=False,
218
+ )
219
+
220
+ # Should automatically use JSON mode instead of forced tool calling
221
+ assert "tool_choice" not in call_kwargs
222
+ assert messages[-1]["content"] == "test message\n\njson_instructions" # type: ignore
223
+ mock_utils.json_mode_content.assert_called_once_with(BaseModel)