mirascope 1.25.5__tar.gz → 1.25.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mirascope-1.25.5 → mirascope-1.25.6}/PKG-INFO +1 -1
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/chroma/types.py +11 -6
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/chroma/vectorstores.py +26 -2
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/mistral/_utils/_setup_call.py +11 -1
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/retries/fallback.py +15 -12
- {mirascope-1.25.5 → mirascope-1.25.6}/pyproject.toml +2 -2
- mirascope-1.25.6/tests/retries/__init__.py +4 -0
- mirascope-1.25.6/tests/retries/test_fallback.py +286 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/uv.lock +179 -102
- mirascope-1.25.5/tests/retries/test_fallback.py +0 -159
- mirascope-1.25.5/tests/tools/web/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/.claude/settings.local.json +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/.github/CODEOWNERS +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/.github/ISSUE_TEMPLATE/question.yml +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/.github/workflows/lint.yml +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/.github/workflows/release.yml +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/.github/workflows/tests.yml +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/.gitignore +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/.pre-commit-config.yaml +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/.vscode/extensions.json +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/.vscode/launch.json +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/.vscode/settings.json +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/LICENSE +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/README.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/anthropic/call.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/anthropic/call_params.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/anthropic/call_response.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/anthropic/call_response_chunk.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/anthropic/dynamic_config.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/anthropic/stream.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/anthropic/tool.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/azure/call.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/azure/call_params.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/azure/call_response.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/azure/call_response_chunk.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/azure/dynamic_config.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/azure/stream.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/azure/tool.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/base/call_factory.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/base/call_params.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/base/call_response.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/base/call_response_chunk.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/base/dynamic_config.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/base/merge_decorators.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/base/message_param.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/base/metadata.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/base/prompt.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/base/stream.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/base/structured_stream.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/base/tool.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/base/toolkit.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/base/types.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/bedrock/call.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/bedrock/call_params.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/bedrock/call_response.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/bedrock/call_response_chunk.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/bedrock/dynamic_config.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/bedrock/stream.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/bedrock/tool.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/cohere/call.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/cohere/call_params.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/cohere/call_response.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/cohere/call_response_chunk.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/cohere/dynamic_config.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/cohere/stream.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/cohere/tool.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/costs/calculate_cost.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/google/call.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/google/call_params.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/google/call_response.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/google/call_response_chunk.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/google/dynamic_config.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/google/stream.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/google/tool.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/groq/call.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/groq/call_params.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/groq/call_response.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/groq/call_response_chunk.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/groq/dynamic_config.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/groq/stream.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/groq/tool.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/litellm/call.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/litellm/call_params.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/litellm/call_response.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/litellm/call_response_chunk.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/litellm/dynamic_config.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/litellm/stream.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/litellm/tool.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/mistral/call.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/mistral/call_params.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/mistral/call_response.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/mistral/call_response_chunk.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/mistral/dynamic_config.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/mistral/stream.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/mistral/tool.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/openai/call.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/openai/call_params.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/openai/call_response.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/openai/call_response_chunk.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/openai/dynamic_config.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/openai/stream.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/openai/tool.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/xai/call.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/xai/call_params.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/xai/call_response.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/xai/call_response_chunk.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/xai/dynamic_config.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/xai/stream.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/core/xai/tool.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/llm/call.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/llm/call_response.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/llm/call_response_chunk.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/llm/context.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/llm/override.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/llm/stream.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/llm/tool.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/mcp/client.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/retries/fallback.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/retries/tenacity.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/tools/system/docker_operation.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/tools/system/file_system.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/tools/web/duckduckgo.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/tools/web/httpx.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/tools/web/parse_url_content.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/api_ref/tools/web/requests.md +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/openai/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/openai/realtime/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/openai/realtime/_utils/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/openai/realtime/_utils/_audio.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/openai/realtime/_utils/_protocols.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/openai/realtime/realtime.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/openai/realtime/recording.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/openai/realtime/tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/base/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/base/chunkers/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/base/chunkers/base_chunker.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/base/chunkers/text_chunker.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/base/config.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/base/document.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/base/embedders.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/base/embedding_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/base/embedding_response.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/base/query_results.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/base/vectorstore_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/base/vectorstores.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/chroma/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/cohere/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/cohere/embedders.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/cohere/embedding_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/cohere/embedding_response.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/cohere/py.typed +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/openai/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/openai/embedders.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/openai/embedding_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/openai/embedding_response.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/openai/py.typed +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/pinecone/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/pinecone/types.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/pinecone/vectorstores.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/weaviate/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/weaviate/types.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/beta/rag/weaviate/vectorstores.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/anthropic/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/anthropic/_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/anthropic/_call_kwargs.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/anthropic/_thinking.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/anthropic/_utils/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/anthropic/_utils/_convert_common_call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/anthropic/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/anthropic/_utils/_convert_message_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/anthropic/_utils/_get_json_output.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/anthropic/_utils/_handle_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/anthropic/_utils/_message_param_converter.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/anthropic/_utils/_setup_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/anthropic/call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/anthropic/call_response.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/anthropic/call_response_chunk.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/anthropic/dynamic_config.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/anthropic/py.typed +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/anthropic/stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/anthropic/tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/azure/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/azure/_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/azure/_call_kwargs.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/azure/_utils/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/azure/_utils/_convert_common_call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/azure/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/azure/_utils/_convert_message_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/azure/_utils/_get_credential.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/azure/_utils/_get_json_output.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/azure/_utils/_handle_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/azure/_utils/_message_param_converter.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/azure/_utils/_setup_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/azure/call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/azure/call_response.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/azure/call_response_chunk.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/azure/dynamic_config.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/azure/py.typed +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/azure/stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/azure/tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_call_factory.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_create.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_extract.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_extract_with_tools.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_partial.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_base_message_param_converter.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_base_type.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_convert_base_model_to_base_tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_convert_base_type_to_base_tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_convert_function_to_base_tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_convert_messages_to_message_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_convert_provider_finish_reason_to_finish_reason.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_default_tool_docstring.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_extract_tool_return.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_fn_is_async.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_format_template.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_get_audio_type.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_get_common_usage.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_get_create_fn_or_async_create_fn.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_get_document_type.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_get_dynamic_configuration.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_get_fields_from_call_args.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_get_fn_args.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_get_image_dimensions.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_get_image_type.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_get_metadata.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_get_possible_user_message_param.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_get_prompt_template.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_get_template_values.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_get_template_variables.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_get_unsupported_tool_config_keys.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_is_prompt_template.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_json_mode_content.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_messages_decorator.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_parse_content_template.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_parse_prompt_messages.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_pil_image_to_bytes.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_protocols.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_setup_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/_utils/_setup_extract_tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/call_kwargs.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/call_response.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/call_response_chunk.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/dynamic_config.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/from_call_args.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/merge_decorators.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/message_param.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/messages.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/metadata.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/prompt.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/response_model_config_dict.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/stream_config.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/structured_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/toolkit.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/base/types.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/bedrock/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/bedrock/_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/bedrock/_call_kwargs.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/bedrock/_types.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/bedrock/_utils/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/bedrock/_utils/_convert_common_call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/bedrock/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/bedrock/_utils/_convert_message_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/bedrock/_utils/_get_json_output.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/bedrock/_utils/_handle_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/bedrock/_utils/_message_param_converter.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/bedrock/_utils/_setup_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/bedrock/call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/bedrock/call_response.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/bedrock/call_response_chunk.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/bedrock/dynamic_config.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/bedrock/py.typed +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/bedrock/stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/bedrock/tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/cohere/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/cohere/_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/cohere/_call_kwargs.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/cohere/_types.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/cohere/_utils/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/cohere/_utils/_convert_common_call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/cohere/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/cohere/_utils/_convert_message_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/cohere/_utils/_get_json_output.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/cohere/_utils/_handle_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/cohere/_utils/_message_param_converter.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/cohere/_utils/_setup_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/cohere/call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/cohere/call_response.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/cohere/call_response_chunk.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/cohere/dynamic_config.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/cohere/py.typed +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/cohere/stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/cohere/tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/costs/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/costs/_anthropic_calculate_cost.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/costs/_azure_calculate_cost.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/costs/_bedrock_calculate_cost.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/costs/_cohere_calculate_cost.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/costs/_gemini_calculate_cost.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/costs/_google_calculate_cost.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/costs/_groq_calculate_cost.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/costs/_litellm_calculate_cost.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/costs/_mistral_calculate_cost.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/costs/_openai_calculate_cost.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/costs/_vertex_calculate_cost.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/costs/_xai_calculate_cost.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/costs/calculate_cost.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/gemini/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/gemini/_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/gemini/_call_kwargs.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/gemini/_utils/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/gemini/_utils/_convert_common_call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/gemini/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/gemini/_utils/_convert_message_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/gemini/_utils/_get_json_output.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/gemini/_utils/_handle_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/gemini/_utils/_message_param_converter.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/gemini/_utils/_setup_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/gemini/call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/gemini/call_response.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/gemini/call_response_chunk.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/gemini/dynamic_config.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/gemini/stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/gemini/tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/google/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/google/_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/google/_call_kwargs.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/google/_utils/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/google/_utils/_convert_common_call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/google/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/google/_utils/_convert_message_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/google/_utils/_get_json_output.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/google/_utils/_handle_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/google/_utils/_message_param_converter.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/google/_utils/_setup_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/google/_utils/_validate_media_type.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/google/call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/google/call_response.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/google/call_response_chunk.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/google/dynamic_config.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/google/stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/google/tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/groq/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/groq/_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/groq/_call_kwargs.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/groq/_utils/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/groq/_utils/_convert_common_call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/groq/_utils/_convert_message_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/groq/_utils/_get_json_output.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/groq/_utils/_handle_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/groq/_utils/_message_param_converter.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/groq/_utils/_setup_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/groq/call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/groq/call_response.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/groq/call_response_chunk.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/groq/dynamic_config.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/groq/py.typed +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/groq/stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/groq/tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/litellm/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/litellm/_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/litellm/_utils/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/litellm/_utils/_setup_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/litellm/call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/litellm/call_response.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/litellm/call_response_chunk.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/litellm/dynamic_config.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/litellm/py.typed +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/litellm/stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/litellm/tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/mistral/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/mistral/_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/mistral/_call_kwargs.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/mistral/_utils/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/mistral/_utils/_convert_common_call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/mistral/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/mistral/_utils/_convert_message_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/mistral/_utils/_get_json_output.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/mistral/_utils/_handle_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/mistral/_utils/_message_param_converter.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/mistral/call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/mistral/call_response.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/mistral/call_response_chunk.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/mistral/dynamic_config.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/mistral/py.typed +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/mistral/stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/mistral/tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/openai/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/openai/_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/openai/_call_kwargs.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/openai/_utils/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/openai/_utils/_convert_common_call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/openai/_utils/_convert_message_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/openai/_utils/_get_json_output.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/openai/_utils/_handle_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/openai/_utils/_message_param_converter.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/openai/_utils/_setup_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/openai/call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/openai/call_response.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/openai/call_response_chunk.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/openai/dynamic_config.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/openai/py.typed +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/openai/stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/openai/tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/py.typed +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/vertex/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/vertex/_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/vertex/_call_kwargs.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/vertex/_utils/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/vertex/_utils/_convert_common_call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/vertex/_utils/_convert_finish_reason_to_common_finish_reasons.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/vertex/_utils/_convert_message_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/vertex/_utils/_get_json_output.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/vertex/_utils/_handle_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/vertex/_utils/_message_param_converter.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/vertex/_utils/_setup_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/vertex/call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/vertex/call_response.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/vertex/call_response_chunk.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/vertex/dynamic_config.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/vertex/stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/vertex/tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/xai/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/xai/_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/xai/_utils/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/xai/_utils/_setup_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/xai/call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/xai/call_response.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/xai/call_response_chunk.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/xai/dynamic_config.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/xai/py.typed +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/xai/stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/core/xai/tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/experimental/graphs/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/experimental/graphs/finite_state_machine.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/integrations/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/integrations/_middleware_factory.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/integrations/langfuse/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/integrations/langfuse/_utils.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/integrations/langfuse/_with_langfuse.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/integrations/logfire/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/integrations/logfire/_utils.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/integrations/logfire/_with_logfire.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/integrations/otel/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/integrations/otel/_utils.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/integrations/otel/_with_hyperdx.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/integrations/otel/_with_otel.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/integrations/tenacity.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/llm/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/llm/_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/llm/_context.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/llm/_override.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/llm/_protocols.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/llm/_response_metaclass.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/llm/call_response.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/llm/call_response_chunk.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/llm/stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/llm/tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/mcp/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/mcp/_utils.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/mcp/client.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/mcp/server.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/mcp/tools.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/py.typed +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/retries/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/retries/tenacity.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/tools/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/tools/base.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/tools/system/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/tools/system/_docker_operation.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/tools/system/_file_system.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/tools/web/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/tools/web/_duckduckgo.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/tools/web/_httpx.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/tools/web/_parse_url_content.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/tools/web/_requests.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/v0/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/v0/anthropic.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/v0/base/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/v0/base/calls.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/v0/base/extractors.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/v0/base/ops_utils.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/v0/base/prompts.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/v0/base/types.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/v0/base/utils.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/mirascope/v0/openai.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/conftest.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/anthropic/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/anthropic/_utils/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/anthropic/_utils/test_convert_common_call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/anthropic/_utils/test_convert_message_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/anthropic/_utils/test_get_json_output.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/anthropic/_utils/test_handle_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/anthropic/_utils/test_message_param_converter.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/anthropic/_utils/test_setup_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/anthropic/test_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/anthropic/test_call_response.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/anthropic/test_call_response_chunk.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/anthropic/test_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/anthropic/test_tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/azure/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/azure/_utils/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/azure/_utils/test_convert_common_call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/azure/_utils/test_convert_message_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/azure/_utils/test_get_credential.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/azure/_utils/test_get_json_output.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/azure/_utils/test_handle_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/azure/_utils/test_message_param_converter.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/azure/_utils/test_setup_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/azure/test_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/azure/test_call_response.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/azure/test_call_response_chunk.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/azure/test_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/azure/test_tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/_utils/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/_utils/test_base_type.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/_utils/test_convert_base_model_to_base_tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/_utils/test_convert_base_type_to_base_tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/_utils/test_convert_function_to_base_tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/_utils/test_convert_messages_to_message_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/_utils/test_extract_tool_return.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/_utils/test_format_template.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/_utils/test_get_audio_type.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/_utils/test_get_create_fn_or_async_create_fn.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/_utils/test_get_document_type.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/_utils/test_get_dynamic_configuration.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/_utils/test_get_fields_from_call_args.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/_utils/test_get_fn_args.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/_utils/test_get_image_dimensions.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/_utils/test_get_image_type.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/_utils/test_get_metadata.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/_utils/test_get_possible_user_message_param.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/_utils/test_get_prompt_template.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/_utils/test_get_template_values.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/_utils/test_get_template_variables.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/_utils/test_get_unsupported_tool_config_keys.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/_utils/test_json_mode_content.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/_utils/test_message_decorator.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/_utils/test_parse_content_template.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/_utils/test_parse_prompt_messages.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/_utils/test_pil_image_to_bytes.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/_utils/test_setup_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/_utils/test_setup_extract_tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/conftest.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/test_call_factory.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/test_call_response.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/test_call_response_chunk.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/test_create.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/test_extract.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/test_extract_with_tools.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/test_merge_decorators.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/test_partial.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/test_prompt.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/test_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/test_structured_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/test_tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/base/test_toolkit.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/bedrock/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/bedrock/_utils/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/bedrock/_utils/test_convert_common_call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/bedrock/_utils/test_convert_message_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/bedrock/_utils/test_get_json_output.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/bedrock/_utils/test_handle_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/bedrock/_utils/test_message_param_converter.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/bedrock/_utils/test_setup_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/bedrock/conftest.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/bedrock/test_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/bedrock/test_call_response.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/bedrock/test_call_response_chunk.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/bedrock/test_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/bedrock/test_tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/cohere/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/cohere/_utils/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/cohere/_utils/test_convert_common_call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/cohere/_utils/test_convert_message_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/cohere/_utils/test_get_json_output.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/cohere/_utils/test_handle_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/cohere/_utils/test_message_param_converter.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/cohere/_utils/test_setup_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/cohere/test_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/cohere/test_call_response.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/cohere/test_call_response_chunk.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/cohere/test_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/cohere/test_tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/costs/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/costs/test_anthropic_calculate_cost.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/costs/test_azure_calculate_cost.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/costs/test_bedrock_calculate_cost.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/costs/test_calculation_cost.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/costs/test_cohere_calculate_cost.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/costs/test_gemini_calculate_cost.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/costs/test_google_calculate_cost.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/costs/test_groq_calculate_cost.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/costs/test_mistral_calculate_cost.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/costs/test_openai_calculate_cost.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/costs/test_vertex_calculate_cost.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/costs/test_xai_calculate_cost.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/gemini/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/gemini/_utils/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/gemini/_utils/test_convert_common_call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/gemini/_utils/test_convert_message_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/gemini/_utils/test_get_json_output.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/gemini/_utils/test_handle_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/gemini/_utils/test_message_param_converter.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/gemini/_utils/test_setup_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/gemini/test_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/gemini/test_call_response.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/gemini/test_call_response_chunk.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/gemini/test_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/gemini/test_tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/google/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/google/_utils/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/google/_utils/test_convert_common_call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/google/_utils/test_convert_message_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/google/_utils/test_get_json_output.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/google/_utils/test_handle_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/google/_utils/test_message_param_converter.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/google/_utils/test_setup_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/google/test_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/google/test_call_response.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/google/test_call_response_chunk.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/google/test_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/google/test_tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/groq/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/groq/_utils/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/groq/_utils/test_convert_common_call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/groq/_utils/test_convert_message_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/groq/_utils/test_get_json_output.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/groq/_utils/test_handle_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/groq/_utils/test_message_param_converter.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/groq/_utils/test_setup_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/groq/test_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/groq/test_call_response.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/groq/test_call_response_chunk.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/groq/test_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/groq/test_tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/litellm/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/litellm/_utils/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/litellm/_utils/test_setup_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/litellm/test_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/litellm/test_call_response.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/litellm/test_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/mistral/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/mistral/_utils/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/mistral/_utils/test_convert_common_call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/mistral/_utils/test_convert_message_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/mistral/_utils/test_get_json_output.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/mistral/_utils/test_handle_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/mistral/_utils/test_message_param_converter.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/mistral/_utils/test_setup_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/mistral/test_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/mistral/test_call_response.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/mistral/test_call_response_chunk.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/mistral/test_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/mistral/test_tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/openai/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/openai/_utils/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/openai/_utils/test_convert_common_call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/openai/_utils/test_convert_message_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/openai/_utils/test_get_json_output.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/openai/_utils/test_handle_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/openai/_utils/test_message_param_converter.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/openai/_utils/test_setup_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/openai/test_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/openai/test_call_response.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/openai/test_call_response_chunk.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/openai/test_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/openai/test_tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/vertex/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/vertex/_utils/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/vertex/_utils/test_convert_common_call_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/vertex/_utils/test_convert_message_params.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/vertex/_utils/test_get_json_output.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/vertex/_utils/test_handle_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/vertex/_utils/test_message_param_converter.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/vertex/_utils/test_setup_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/vertex/test_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/vertex/test_call_response.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/vertex/test_call_response_chunk.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/vertex/test_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/vertex/test_tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/xai/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/xai/_utils/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/xai/_utils/test_setup_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/xai/test_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/xai/test_call_response.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/core/xai/test_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/integrations/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/integrations/langfuse/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/integrations/langfuse/test_utils.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/integrations/langfuse/test_with_langfuse.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/integrations/logfire/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/integrations/logfire/test_utils.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/integrations/logfire/test_with_logfire.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/integrations/otel/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/integrations/otel/test_utils.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/integrations/otel/test_with_hyperdx.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/integrations/otel/test_with_otel.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/integrations/test_middleware_factory.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/llm/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/llm/test_call.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/llm/test_call_response.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/llm/test_call_response_chunk.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/llm/test_context.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/llm/test_override.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/llm/test_response_metaclass.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/llm/test_stream.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/llm/test_tool.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/mcp/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/mcp/test_client.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/mcp/test_server.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/retries/test_tenacity.py +0 -0
- {mirascope-1.25.5/tests/retries → mirascope-1.25.6/tests/tools}/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/tools/test_base.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/tools/test_docker_operation_toolkit.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/tools/test_filesystem_toolkit.py +0 -0
- {mirascope-1.25.5/tests/tools → mirascope-1.25.6/tests/tools/web}/__init__.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/tools/web/test_duckduckgo.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/tools/web/test_httpx.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/tools/web/test_parse_url_content.py +0 -0
- {mirascope-1.25.5 → mirascope-1.25.6}/tests/tools/web/test_requests.py +0 -0
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
from typing import Any, Literal
|
|
4
4
|
|
|
5
|
-
from chromadb import CollectionMetadata
|
|
5
|
+
from chromadb import CollectionMetadata
|
|
6
6
|
from chromadb.api.types import URI, Document, IDs, Loadable, Metadata
|
|
7
|
-
from chromadb.config import DEFAULT_DATABASE, DEFAULT_TENANT
|
|
7
|
+
from chromadb.config import DEFAULT_DATABASE, DEFAULT_TENANT, Settings
|
|
8
8
|
from chromadb.types import Vector
|
|
9
9
|
from pydantic import BaseModel, ConfigDict
|
|
10
10
|
|
|
@@ -29,7 +29,7 @@ class ChromaQueryResult(BaseModel):
|
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
class ChromaSettings(BaseModel):
|
|
32
|
-
mode: Literal["http", "persistent", "ephemeral"] = "persistent"
|
|
32
|
+
mode: Literal["http", "persistent", "ephemeral", "cloud"] = "persistent"
|
|
33
33
|
path: str = "./chroma"
|
|
34
34
|
host: str = "localhost"
|
|
35
35
|
port: int = 8000
|
|
@@ -38,17 +38,22 @@ class ChromaSettings(BaseModel):
|
|
|
38
38
|
settings: Settings | None = None
|
|
39
39
|
tenant: str = DEFAULT_TENANT
|
|
40
40
|
database: str = DEFAULT_DATABASE
|
|
41
|
+
api_key: str | None = None
|
|
41
42
|
|
|
42
43
|
model_config = ConfigDict(extra="allow", arbitrary_types_allowed=True)
|
|
43
44
|
|
|
44
45
|
def kwargs(self) -> dict[str, Any]:
|
|
45
46
|
"""Returns all parameters for the index as a keyword arguments dictionary."""
|
|
46
47
|
if self.mode == "http":
|
|
47
|
-
exclude = {"mode", "path"}
|
|
48
|
+
exclude = {"mode", "path", "api_key"}
|
|
48
49
|
elif self.mode == "persistent":
|
|
49
|
-
exclude = {"mode", "host", "port", "ssl", "headers"}
|
|
50
|
+
exclude = {"mode", "host", "port", "ssl", "headers", "api_key"}
|
|
50
51
|
elif self.mode == "ephemeral":
|
|
51
|
-
exclude = {"mode", "host", "port", "ssl", "headers", "path"}
|
|
52
|
+
exclude = {"mode", "host", "port", "ssl", "headers", "path", "api_key"}
|
|
53
|
+
elif self.mode == "cloud":
|
|
54
|
+
exclude = {"mode", "path", "host", "port", "ssl", "headers"}
|
|
55
|
+
else:
|
|
56
|
+
exclude = {"mode"}
|
|
52
57
|
kwargs = {
|
|
53
58
|
key: value
|
|
54
59
|
for key, value in self.model_dump(exclude=exclude).items()
|
|
@@ -3,7 +3,14 @@
|
|
|
3
3
|
from functools import cached_property
|
|
4
4
|
from typing import Any, ClassVar, cast
|
|
5
5
|
|
|
6
|
-
from chromadb import
|
|
6
|
+
from chromadb import (
|
|
7
|
+
CloudClient,
|
|
8
|
+
Collection,
|
|
9
|
+
EphemeralClient,
|
|
10
|
+
HttpClient,
|
|
11
|
+
Metadata,
|
|
12
|
+
PersistentClient,
|
|
13
|
+
)
|
|
7
14
|
from chromadb.api import ClientAPI
|
|
8
15
|
|
|
9
16
|
from ..base.document import Document
|
|
@@ -22,12 +29,25 @@ class ChromaVectorStore(BaseVectorStore):
|
|
|
22
29
|
from mirascope.beta.rag import TextChunker
|
|
23
30
|
|
|
24
31
|
|
|
32
|
+
# Local persistent storage
|
|
25
33
|
class MyStore(ChromaVectorStore):
|
|
26
34
|
embedder = OpenAIEmbedder()
|
|
27
35
|
chunker = TextChunker(chunk_size=1000, chunk_overlap=200)
|
|
28
36
|
index_name = "my-store-0001"
|
|
29
37
|
client_settings = ChromaSettings()
|
|
30
38
|
|
|
39
|
+
# Cloud mode with CloudClient authentication
|
|
40
|
+
class MyCloudStore(ChromaVectorStore):
|
|
41
|
+
embedder = OpenAIEmbedder()
|
|
42
|
+
chunker = TextChunker(chunk_size=1000, chunk_overlap=200)
|
|
43
|
+
index_name = "my-cloud-store-0001"
|
|
44
|
+
client_settings = ChromaSettings(
|
|
45
|
+
mode="cloud",
|
|
46
|
+
api_key="your-api-key",
|
|
47
|
+
tenant="your-tenant",
|
|
48
|
+
database="your-database",
|
|
49
|
+
)
|
|
50
|
+
|
|
31
51
|
my_store = MyStore()
|
|
32
52
|
with open(f"{PATH_TO_FILE}") as file:
|
|
33
53
|
data = file.read()
|
|
@@ -82,6 +102,10 @@ class ChromaVectorStore(BaseVectorStore):
|
|
|
82
102
|
return HttpClient(**self.client_settings.kwargs())
|
|
83
103
|
elif self.client_settings.mode == "ephemeral":
|
|
84
104
|
return EphemeralClient(**self.client_settings.kwargs())
|
|
105
|
+
elif self.client_settings.mode == "cloud":
|
|
106
|
+
return CloudClient(**self.client_settings.kwargs())
|
|
107
|
+
else:
|
|
108
|
+
raise ValueError(f"Unsupported client mode: {self.client_settings.mode}")
|
|
85
109
|
|
|
86
110
|
@cached_property
|
|
87
111
|
def _index(self) -> Collection:
|
|
@@ -93,5 +117,5 @@ class ChromaVectorStore(BaseVectorStore):
|
|
|
93
117
|
|
|
94
118
|
return self._client.create_collection(
|
|
95
119
|
**vectorstore_params.kwargs(),
|
|
96
|
-
embedding_function=self.embedder,
|
|
120
|
+
embedding_function=self.embedder, # type: ignore[arg-type]
|
|
97
121
|
)
|
|
@@ -39,6 +39,16 @@ from ..tool import MistralTool
|
|
|
39
39
|
from ._convert_common_call_params import convert_common_call_params
|
|
40
40
|
from ._convert_message_params import convert_message_params
|
|
41
41
|
|
|
42
|
+
global_client: Mistral | None = None
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def _get_default_client() -> Mistral:
|
|
46
|
+
"""Get or create the default Mistral client."""
|
|
47
|
+
global global_client
|
|
48
|
+
if global_client is None:
|
|
49
|
+
global_client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])
|
|
50
|
+
return global_client
|
|
51
|
+
|
|
42
52
|
|
|
43
53
|
@overload
|
|
44
54
|
def setup_call(
|
|
@@ -144,7 +154,7 @@ def setup_call(
|
|
|
144
154
|
call_kwargs |= {"model": model, "messages": messages}
|
|
145
155
|
|
|
146
156
|
if client is None:
|
|
147
|
-
client =
|
|
157
|
+
client = _get_default_client()
|
|
148
158
|
if fn_is_async(fn):
|
|
149
159
|
create_or_stream = get_async_create_fn(
|
|
150
160
|
client.chat.complete_async, client.chat.stream_async
|
|
@@ -4,6 +4,7 @@ import inspect
|
|
|
4
4
|
from collections.abc import Callable, Coroutine
|
|
5
5
|
from typing import Any, ParamSpec, Protocol, TypeVar, overload
|
|
6
6
|
|
|
7
|
+
from pydantic import BaseModel
|
|
7
8
|
from typing_extensions import NotRequired, Required, TypedDict
|
|
8
9
|
|
|
9
10
|
from .. import llm
|
|
@@ -75,8 +76,8 @@ def fallback(
|
|
|
75
76
|
def decorator(
|
|
76
77
|
fn: Callable[_P, _R] | Callable[_P, Coroutine[_R, Any, Any]],
|
|
77
78
|
) -> Callable[_P, _R] | Callable[_P, Coroutine[_R, Any, Any]]:
|
|
78
|
-
|
|
79
|
-
if inspect.iscoroutinefunction(
|
|
79
|
+
fn_to_check = fn._original_fn if hasattr(fn, "_original_fn") else fn # pyright: ignore [reportFunctionMemberAccess]
|
|
80
|
+
if inspect.iscoroutinefunction(fn_to_check):
|
|
80
81
|
|
|
81
82
|
async def inner_async(*args: _P.args, **kwargs: _P.kwargs) -> _R:
|
|
82
83
|
caught: list[Exception] = []
|
|
@@ -86,15 +87,16 @@ def fallback(
|
|
|
86
87
|
caught.append(e)
|
|
87
88
|
for backup in fallbacks:
|
|
88
89
|
try:
|
|
89
|
-
|
|
90
|
-
fn,
|
|
90
|
+
with llm.context(
|
|
91
91
|
provider=backup["provider"],
|
|
92
92
|
model=backup["model"],
|
|
93
93
|
call_params=backup.get("call_params", None),
|
|
94
94
|
client=backup.get("client", None),
|
|
95
|
-
)
|
|
96
|
-
|
|
97
|
-
|
|
95
|
+
):
|
|
96
|
+
response = await fn(*args, **kwargs) # pyright: ignore [reportGeneralTypeIssues]
|
|
97
|
+
if isinstance(response, BaseModel):
|
|
98
|
+
response._caught = caught # pyright: ignore [reportAttributeAccessIssue]
|
|
99
|
+
return response # pyright: ignore [reportReturnType]
|
|
98
100
|
except backup["catch"] as be:
|
|
99
101
|
caught.append(be)
|
|
100
102
|
raise FallbackError(f"All fallbacks failed:\n{caught}")
|
|
@@ -110,15 +112,16 @@ def fallback(
|
|
|
110
112
|
caught.append(e)
|
|
111
113
|
for backup in fallbacks:
|
|
112
114
|
try:
|
|
113
|
-
|
|
114
|
-
fn,
|
|
115
|
+
with llm.context(
|
|
115
116
|
provider=backup["provider"],
|
|
116
117
|
model=backup["model"],
|
|
117
118
|
call_params=backup.get("call_params", None),
|
|
118
119
|
client=backup.get("client", None),
|
|
119
|
-
)
|
|
120
|
-
|
|
121
|
-
|
|
120
|
+
):
|
|
121
|
+
response = fn(*args, **kwargs)
|
|
122
|
+
if isinstance(response, BaseModel):
|
|
123
|
+
response._caught = caught # pyright: ignore [reportAttributeAccessIssue]
|
|
124
|
+
return response # pyright: ignore [reportReturnType]
|
|
122
125
|
except backup["catch"] as be:
|
|
123
126
|
caught.append(be)
|
|
124
127
|
raise FallbackError(f"All fallbacks failed:\n{caught}")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "mirascope"
|
|
3
|
-
version = "1.25.
|
|
3
|
+
version = "1.25.6"
|
|
4
4
|
description = "LLM abstractions that aren't obstructions"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = { file = "LICENSE" }
|
|
@@ -104,7 +104,7 @@ dev-dependencies = [
|
|
|
104
104
|
"mkdocs-exclude>=1.0.2",
|
|
105
105
|
"black>=24.8.0",
|
|
106
106
|
"weaviate-client>=4.7.1",
|
|
107
|
-
"chromadb>=0.
|
|
107
|
+
"chromadb>=1.0.0",
|
|
108
108
|
"pinecone-client>=5.0.1",
|
|
109
109
|
"scikit-learn>=1.5.1",
|
|
110
110
|
"duckduckgo-search>=6.2.10,<7",
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
"""Tests the `fallback` module."""
|
|
2
|
+
|
|
3
|
+
from unittest.mock import AsyncMock, MagicMock, patch
|
|
4
|
+
|
|
5
|
+
import pytest
|
|
6
|
+
from anthropic import RateLimitError as AnthropicRateLimitError
|
|
7
|
+
from anthropic.types import (
|
|
8
|
+
Message,
|
|
9
|
+
MessageDeltaUsage,
|
|
10
|
+
RawContentBlockDeltaEvent,
|
|
11
|
+
RawContentBlockStartEvent,
|
|
12
|
+
RawContentBlockStopEvent,
|
|
13
|
+
RawMessageDeltaEvent,
|
|
14
|
+
RawMessageStartEvent,
|
|
15
|
+
RawMessageStopEvent,
|
|
16
|
+
TextBlock,
|
|
17
|
+
TextDelta,
|
|
18
|
+
Usage,
|
|
19
|
+
)
|
|
20
|
+
from anthropic.types.raw_message_delta_event import Delta
|
|
21
|
+
from httpx import Request, Response
|
|
22
|
+
from openai import RateLimitError as OpenAIRateLimitError
|
|
23
|
+
|
|
24
|
+
from mirascope import llm
|
|
25
|
+
from mirascope.retries.fallback import FallbackError, fallback
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@patch(
|
|
29
|
+
"anthropic.resources.messages.Messages.create",
|
|
30
|
+
new_callable=MagicMock,
|
|
31
|
+
side_effect=AnthropicRateLimitError(
|
|
32
|
+
message="",
|
|
33
|
+
response=Response(429, request=Request(method="", url="")),
|
|
34
|
+
body=None,
|
|
35
|
+
),
|
|
36
|
+
)
|
|
37
|
+
@patch(
|
|
38
|
+
"openai.resources.chat.completions.Completions.create",
|
|
39
|
+
new_callable=MagicMock,
|
|
40
|
+
side_effect=OpenAIRateLimitError(
|
|
41
|
+
message="",
|
|
42
|
+
response=Response(429, request=Request(method="", url="")),
|
|
43
|
+
body=None,
|
|
44
|
+
),
|
|
45
|
+
)
|
|
46
|
+
def test_fallback(mock_openai_create: MagicMock, mock_anthropic_create: MagicMock):
|
|
47
|
+
@fallback(
|
|
48
|
+
OpenAIRateLimitError,
|
|
49
|
+
[
|
|
50
|
+
{
|
|
51
|
+
"catch": AnthropicRateLimitError,
|
|
52
|
+
"provider": "anthropic",
|
|
53
|
+
"model": "claude-3-5-sonnet-latest",
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
)
|
|
57
|
+
@llm.call("openai", "gpt-4o-mini")
|
|
58
|
+
def answer_question(question: str) -> str:
|
|
59
|
+
return question
|
|
60
|
+
|
|
61
|
+
with pytest.raises(FallbackError):
|
|
62
|
+
answer_question("What is the meaning of life?")
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
@patch(
|
|
66
|
+
"anthropic.resources.messages.Messages.create",
|
|
67
|
+
new_callable=MagicMock,
|
|
68
|
+
return_value=Message(
|
|
69
|
+
id="id",
|
|
70
|
+
content=[TextBlock(text="content", type="text")],
|
|
71
|
+
model="claude-3-5-sonnet-20240620",
|
|
72
|
+
role="assistant",
|
|
73
|
+
stop_reason="end_turn",
|
|
74
|
+
stop_sequence=None,
|
|
75
|
+
type="message",
|
|
76
|
+
usage=Usage(input_tokens=1, output_tokens=1),
|
|
77
|
+
),
|
|
78
|
+
)
|
|
79
|
+
@patch(
|
|
80
|
+
"openai.resources.chat.completions.Completions.create",
|
|
81
|
+
new_callable=MagicMock,
|
|
82
|
+
side_effect=OpenAIRateLimitError(
|
|
83
|
+
message="",
|
|
84
|
+
response=Response(429, request=Request(method="", url="")),
|
|
85
|
+
body=None,
|
|
86
|
+
),
|
|
87
|
+
)
|
|
88
|
+
def test_fallback_success(
|
|
89
|
+
mock_openai_create: MagicMock, mock_anthropic_create: MagicMock
|
|
90
|
+
):
|
|
91
|
+
@fallback(
|
|
92
|
+
OpenAIRateLimitError,
|
|
93
|
+
[
|
|
94
|
+
{
|
|
95
|
+
"catch": AnthropicRateLimitError,
|
|
96
|
+
"provider": "anthropic",
|
|
97
|
+
"model": "claude-3-5-sonnet-latest",
|
|
98
|
+
}
|
|
99
|
+
],
|
|
100
|
+
)
|
|
101
|
+
@llm.call("openai", "gpt-4o-mini")
|
|
102
|
+
def answer_question(question: str) -> str:
|
|
103
|
+
return question
|
|
104
|
+
|
|
105
|
+
response = answer_question("What is the meaning of life?")
|
|
106
|
+
assert hasattr(response, "_caught")
|
|
107
|
+
assert isinstance(response._caught[0], OpenAIRateLimitError)
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
@patch(
|
|
111
|
+
"anthropic.resources.messages.AsyncMessages.create",
|
|
112
|
+
new_callable=MagicMock,
|
|
113
|
+
side_effect=AnthropicRateLimitError(
|
|
114
|
+
message="",
|
|
115
|
+
response=Response(429, request=Request(method="", url="")),
|
|
116
|
+
body=None,
|
|
117
|
+
),
|
|
118
|
+
)
|
|
119
|
+
@patch(
|
|
120
|
+
"openai.resources.chat.completions.AsyncCompletions.create",
|
|
121
|
+
new_callable=MagicMock,
|
|
122
|
+
side_effect=OpenAIRateLimitError(
|
|
123
|
+
message="",
|
|
124
|
+
response=Response(429, request=Request(method="", url="")),
|
|
125
|
+
body=None,
|
|
126
|
+
),
|
|
127
|
+
)
|
|
128
|
+
@pytest.mark.asyncio
|
|
129
|
+
async def test_fallback_async(
|
|
130
|
+
mock_openai_create: MagicMock, mock_anthropic_create: MagicMock
|
|
131
|
+
):
|
|
132
|
+
@fallback(
|
|
133
|
+
OpenAIRateLimitError,
|
|
134
|
+
[
|
|
135
|
+
{
|
|
136
|
+
"catch": AnthropicRateLimitError,
|
|
137
|
+
"provider": "anthropic",
|
|
138
|
+
"model": "claude-3-5-sonnet-latest",
|
|
139
|
+
}
|
|
140
|
+
],
|
|
141
|
+
)
|
|
142
|
+
@llm.call("openai", "gpt-4o-mini")
|
|
143
|
+
async def answer_question_async(question: str) -> str:
|
|
144
|
+
return question
|
|
145
|
+
|
|
146
|
+
with pytest.raises(FallbackError):
|
|
147
|
+
await answer_question_async("What is the meaning of life?")
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
@patch(
|
|
151
|
+
"anthropic.resources.messages.AsyncMessages.create",
|
|
152
|
+
new_callable=MagicMock,
|
|
153
|
+
)
|
|
154
|
+
@patch(
|
|
155
|
+
"openai.resources.chat.completions.AsyncCompletions.create",
|
|
156
|
+
new_callable=MagicMock,
|
|
157
|
+
side_effect=OpenAIRateLimitError(
|
|
158
|
+
message="",
|
|
159
|
+
response=Response(429, request=Request(method="", url="")),
|
|
160
|
+
body=None,
|
|
161
|
+
),
|
|
162
|
+
)
|
|
163
|
+
@pytest.mark.asyncio
|
|
164
|
+
async def test_fallback_async_success(
|
|
165
|
+
mock_openai_call: AsyncMock, mock_anthropic_create: MagicMock
|
|
166
|
+
):
|
|
167
|
+
async def awaitable_message():
|
|
168
|
+
return Message(
|
|
169
|
+
id="id",
|
|
170
|
+
content=[TextBlock(text="content", type="text")],
|
|
171
|
+
model="claude-3-5-sonnet-20240620",
|
|
172
|
+
role="assistant",
|
|
173
|
+
stop_reason="end_turn",
|
|
174
|
+
stop_sequence=None,
|
|
175
|
+
type="message",
|
|
176
|
+
usage=Usage(input_tokens=1, output_tokens=1),
|
|
177
|
+
)
|
|
178
|
+
|
|
179
|
+
mock_anthropic_create.return_value = awaitable_message()
|
|
180
|
+
|
|
181
|
+
@fallback(
|
|
182
|
+
OpenAIRateLimitError,
|
|
183
|
+
[
|
|
184
|
+
{
|
|
185
|
+
"catch": AnthropicRateLimitError,
|
|
186
|
+
"provider": "anthropic",
|
|
187
|
+
"model": "claude-3-5-sonnet-latest",
|
|
188
|
+
}
|
|
189
|
+
],
|
|
190
|
+
)
|
|
191
|
+
@llm.call("openai", "gpt-4o-mini")
|
|
192
|
+
async def answer_question(question: str) -> str:
|
|
193
|
+
return question
|
|
194
|
+
|
|
195
|
+
response = await answer_question("What is the meaning of life?")
|
|
196
|
+
assert hasattr(response, "_caught")
|
|
197
|
+
assert isinstance(response._caught[0], OpenAIRateLimitError)
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
@patch(
|
|
201
|
+
"anthropic.resources.messages.Messages.create",
|
|
202
|
+
new_callable=MagicMock,
|
|
203
|
+
)
|
|
204
|
+
@patch(
|
|
205
|
+
"openai.resources.chat.completions.Completions.create",
|
|
206
|
+
new_callable=MagicMock,
|
|
207
|
+
)
|
|
208
|
+
def test_fallback_streaming_wrapper(
|
|
209
|
+
mock_openai_create: MagicMock, mock_anthropic_create: MagicMock
|
|
210
|
+
) -> None:
|
|
211
|
+
class StreamingError(Exception): ...
|
|
212
|
+
|
|
213
|
+
def failing_openai_generator():
|
|
214
|
+
"""Generator that raises StreamingError when iterated"""
|
|
215
|
+
yield MagicMock() # This will trigger the exception when next() is called
|
|
216
|
+
raise StreamingError("OpenAI streaming failed")
|
|
217
|
+
|
|
218
|
+
mock_openai_create.return_value = failing_openai_generator()
|
|
219
|
+
mock_anthropic_create.return_value = iter(
|
|
220
|
+
[
|
|
221
|
+
RawMessageStartEvent(
|
|
222
|
+
message=Message(
|
|
223
|
+
id="msg_id",
|
|
224
|
+
content=[],
|
|
225
|
+
model="claude-3-5-sonnet-latest",
|
|
226
|
+
role="assistant",
|
|
227
|
+
stop_reason=None,
|
|
228
|
+
stop_sequence=None,
|
|
229
|
+
type="message",
|
|
230
|
+
usage=Usage(input_tokens=10, output_tokens=0),
|
|
231
|
+
),
|
|
232
|
+
type="message_start",
|
|
233
|
+
),
|
|
234
|
+
RawContentBlockStartEvent(
|
|
235
|
+
content_block=TextBlock(
|
|
236
|
+
text="",
|
|
237
|
+
type="text",
|
|
238
|
+
),
|
|
239
|
+
index=0,
|
|
240
|
+
type="content_block_start",
|
|
241
|
+
),
|
|
242
|
+
RawContentBlockDeltaEvent(
|
|
243
|
+
delta=TextDelta(text="anthropic", type="text_delta"),
|
|
244
|
+
index=0,
|
|
245
|
+
type="content_block_delta",
|
|
246
|
+
),
|
|
247
|
+
RawContentBlockDeltaEvent(
|
|
248
|
+
delta=TextDelta(text="streamed", type="text_delta"),
|
|
249
|
+
index=0,
|
|
250
|
+
type="content_block_delta",
|
|
251
|
+
),
|
|
252
|
+
RawContentBlockDeltaEvent(
|
|
253
|
+
delta=TextDelta(text="successfully", type="text_delta"),
|
|
254
|
+
index=0,
|
|
255
|
+
type="content_block_delta",
|
|
256
|
+
),
|
|
257
|
+
RawContentBlockStopEvent(index=0, type="content_block_stop"),
|
|
258
|
+
RawMessageDeltaEvent(
|
|
259
|
+
delta=Delta(stop_reason="end_turn", stop_sequence=None),
|
|
260
|
+
type="message_delta",
|
|
261
|
+
usage=MessageDeltaUsage(output_tokens=3),
|
|
262
|
+
),
|
|
263
|
+
RawMessageStopEvent(type="message_stop"),
|
|
264
|
+
]
|
|
265
|
+
)
|
|
266
|
+
|
|
267
|
+
@llm.call("openai", "gpt-4o-mini", stream=True)
|
|
268
|
+
def answer_question(question: str) -> str:
|
|
269
|
+
return question
|
|
270
|
+
|
|
271
|
+
@fallback(
|
|
272
|
+
StreamingError,
|
|
273
|
+
[
|
|
274
|
+
{
|
|
275
|
+
"catch": StreamingError,
|
|
276
|
+
"provider": "anthropic",
|
|
277
|
+
"model": "claude-3-5-sonnet-latest",
|
|
278
|
+
}
|
|
279
|
+
],
|
|
280
|
+
)
|
|
281
|
+
def answer_question_wrapper(question: str) -> list[str]:
|
|
282
|
+
stream = answer_question("What is the meaning of life?")
|
|
283
|
+
return [chunk.content for chunk, _ in stream if chunk.content]
|
|
284
|
+
|
|
285
|
+
chunks = answer_question_wrapper("What is the meaning of life?")
|
|
286
|
+
assert chunks == ["anthropic", "streamed", "successfully"]
|