mirascope 1.20.0__py3-none-any.whl → 1.21.0__py3-none-any.whl

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.
@@ -1,233 +0,0 @@
1
- """Overrides the provider-specific call with the specified provider."""
2
-
3
- from __future__ import annotations
4
-
5
- from collections.abc import Callable
6
- from typing import TYPE_CHECKING, Any, Literal, ParamSpec, TypeVar, overload
7
-
8
- from ..core.base import CommonCallParams
9
- from ..core.base.types import LocalProvider, Provider
10
- from .llm_call import _call
11
-
12
- if TYPE_CHECKING:
13
- from ..core.anthropic import AnthropicCallParams
14
- from ..core.azure import AzureCallParams
15
- from ..core.bedrock import BedrockCallParams
16
- from ..core.cohere import CohereCallParams
17
- from ..core.gemini import GeminiCallParams
18
- from ..core.google import GoogleCallParams
19
- from ..core.groq import GroqCallParams
20
- from ..core.litellm import LiteLLMCallParams
21
- from ..core.mistral import MistralCallParams
22
- from ..core.openai import OpenAICallParams
23
- from ..core.vertex import VertexCallParams
24
- else:
25
- AnthropicCallParams = AzureCallParams = BedrockCallParams = CohereCallParams = (
26
- GeminiCallParams
27
- ) = GoogleCallParams = GroqCallParams = LiteLLMCallParams = MistralCallParams = (
28
- OpenAICallParams
29
- ) = VertexCallParams = None
30
-
31
-
32
- _P = ParamSpec("_P")
33
- _R = TypeVar("_R")
34
-
35
-
36
- @overload
37
- def override(
38
- provider_agnostic_call: Callable[_P, _R],
39
- *,
40
- provider: Literal["anthropic"],
41
- model: str,
42
- call_params: CommonCallParams | AnthropicCallParams | None = None,
43
- client: Any = None, # noqa: ANN401
44
- ) -> Callable[_P, _R]: ...
45
-
46
-
47
- @overload
48
- def override(
49
- provider_agnostic_call: Callable[_P, _R],
50
- *,
51
- provider: Literal["azure"],
52
- model: str,
53
- call_params: CommonCallParams | AzureCallParams | None = None,
54
- client: Any = None, # noqa: ANN401
55
- ) -> Callable[_P, _R]: ...
56
-
57
-
58
- @overload
59
- def override(
60
- provider_agnostic_call: Callable[_P, _R],
61
- *,
62
- provider: Literal["bedrock"],
63
- model: str,
64
- call_params: CommonCallParams | BedrockCallParams | None = None,
65
- client: Any = None, # noqa: ANN401
66
- ) -> Callable[_P, _R]: ...
67
-
68
-
69
- @overload
70
- def override(
71
- provider_agnostic_call: Callable[_P, _R],
72
- *,
73
- provider: Literal["cohere"],
74
- model: str,
75
- call_params: CommonCallParams | CohereCallParams | None = None,
76
- client: Any = None, # noqa: ANN401
77
- ) -> Callable[_P, _R]: ...
78
-
79
-
80
- @overload
81
- def override(
82
- provider_agnostic_call: Callable[_P, _R],
83
- *,
84
- provider: Literal["gemini"],
85
- model: str,
86
- call_params: CommonCallParams | GeminiCallParams | None = None,
87
- client: Any = None, # noqa: ANN401
88
- ) -> Callable[_P, _R]: ...
89
-
90
-
91
- @overload
92
- def override(
93
- provider_agnostic_call: Callable[_P, _R],
94
- *,
95
- provider: Literal["google"],
96
- model: str,
97
- call_params: CommonCallParams | GoogleCallParams | None = None,
98
- client: Any = None, # noqa: ANN401
99
- ) -> Callable[_P, _R]: ...
100
-
101
-
102
- @overload
103
- def override(
104
- provider_agnostic_call: Callable[_P, _R],
105
- *,
106
- provider: Literal["groq"],
107
- model: str,
108
- call_params: CommonCallParams | GroqCallParams | None = None,
109
- client: Any = None, # noqa: ANN401
110
- ) -> Callable[_P, _R]: ...
111
-
112
-
113
- @overload
114
- def override(
115
- provider_agnostic_call: Callable[_P, _R],
116
- *,
117
- provider: Literal["mistral"],
118
- model: str,
119
- call_params: CommonCallParams | MistralCallParams | None = None,
120
- client: Any = None, # noqa: ANN401
121
- ) -> Callable[_P, _R]: ...
122
-
123
-
124
- @overload
125
- def override(
126
- provider_agnostic_call: Callable[_P, _R],
127
- *,
128
- provider: Literal["openai"],
129
- model: str,
130
- call_params: CommonCallParams | OpenAICallParams | None = None,
131
- client: Any = None, # noqa: ANN401
132
- ) -> Callable[_P, _R]: ...
133
-
134
-
135
- @overload
136
- def override(
137
- provider_agnostic_call: Callable[_P, _R],
138
- *,
139
- provider: Literal["litellm"],
140
- model: str,
141
- call_params: CommonCallParams | LiteLLMCallParams | None = None,
142
- client: Any = None, # noqa: ANN401
143
- ) -> Callable[_P, _R]: ...
144
-
145
-
146
- @overload
147
- def override(
148
- provider_agnostic_call: Callable[_P, _R],
149
- *,
150
- provider: Literal["vertex"],
151
- model: str,
152
- call_params: CommonCallParams | VertexCallParams | None = None,
153
- client: Any = None, # noqa: ANN401
154
- ) -> Callable[_P, _R]: ...
155
-
156
-
157
- @overload
158
- def override(
159
- provider_agnostic_call: Callable[_P, _R],
160
- *,
161
- provider: None = None,
162
- model: None = None,
163
- call_params: CommonCallParams | None = None,
164
- client: Any = None, # noqa: ANN401
165
- ) -> Callable[_P, _R]: ...
166
-
167
-
168
- @overload
169
- def override(
170
- provider_agnostic_call: Callable[_P, _R],
171
- *,
172
- provider: Provider,
173
- model: str,
174
- call_params: CommonCallParams | None = None,
175
- client: Any = None, # noqa: ANN401
176
- ) -> Callable[_P, _R]: ...
177
-
178
-
179
- def override(
180
- provider_agnostic_call: Callable[_P, _R],
181
- *,
182
- provider: Provider | LocalProvider | None = None,
183
- model: str | None = None,
184
- call_params: CommonCallParams
185
- | AnthropicCallParams
186
- | GeminiCallParams
187
- | GoogleCallParams
188
- | AzureCallParams
189
- | BedrockCallParams
190
- | CohereCallParams
191
- | GroqCallParams
192
- | MistralCallParams
193
- | OpenAICallParams
194
- | VertexCallParams
195
- | None = None,
196
- client: Any = None, # noqa: ANN401
197
- ) -> Callable[_P, _R]:
198
- """Overrides the provider-specific call with the specified provider.
199
-
200
- Args:
201
- provider_agnostic_call: The provider-agnostic call to override.
202
- provider: The provider to override with.
203
- model: The model to override with.
204
- call_params: The call params to override with.
205
- client: The client to override with.
206
-
207
- Returns:
208
- The overridden function.
209
- """
210
- if (provider and not model) or (model and not provider):
211
- raise ValueError(
212
- "Provider and model must both be overridden if either is overridden."
213
- )
214
-
215
- original_provider = provider_agnostic_call._original_provider # pyright: ignore [reportFunctionMemberAccess]
216
- original_args = provider_agnostic_call._original_args # pyright: ignore [reportFunctionMemberAccess]
217
-
218
- # Note: if switching providers, we will always use `client` since `original_client`
219
- # would be from a different provider and fail.
220
- if provider and provider == original_provider:
221
- client = client or original_args["client"]
222
-
223
- return _call( # pyright: ignore [reportReturnType]
224
- provider=provider or original_provider,
225
- model=model or original_args["model"],
226
- stream=original_args["stream"],
227
- tools=original_args["tools"],
228
- response_model=original_args["response_model"],
229
- output_parser=original_args["output_parser"],
230
- json_mode=original_args["json_mode"],
231
- client=client,
232
- call_params=call_params or original_args["call_params"],
233
- )(provider_agnostic_call._original_fn) # pyright: ignore [reportFunctionMemberAccess]