mirascope 2.0.0a3__py3-none-any.whl → 2.0.0a5__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.
Files changed (118) hide show
  1. mirascope/api/_generated/__init__.py +78 -6
  2. mirascope/api/_generated/api_keys/__init__.py +7 -0
  3. mirascope/api/_generated/api_keys/client.py +453 -0
  4. mirascope/api/_generated/api_keys/raw_client.py +853 -0
  5. mirascope/api/_generated/api_keys/types/__init__.py +9 -0
  6. mirascope/api/_generated/api_keys/types/api_keys_create_response.py +36 -0
  7. mirascope/api/_generated/api_keys/types/api_keys_get_response.py +35 -0
  8. mirascope/api/_generated/api_keys/types/api_keys_list_response_item.py +35 -0
  9. mirascope/api/_generated/client.py +14 -0
  10. mirascope/api/_generated/environments/__init__.py +17 -0
  11. mirascope/api/_generated/environments/client.py +532 -0
  12. mirascope/api/_generated/environments/raw_client.py +1088 -0
  13. mirascope/api/_generated/environments/types/__init__.py +15 -0
  14. mirascope/api/_generated/environments/types/environments_create_response.py +26 -0
  15. mirascope/api/_generated/environments/types/environments_get_response.py +26 -0
  16. mirascope/api/_generated/environments/types/environments_list_response_item.py +26 -0
  17. mirascope/api/_generated/environments/types/environments_update_response.py +26 -0
  18. mirascope/api/_generated/errors/__init__.py +11 -1
  19. mirascope/api/_generated/errors/conflict_error.py +15 -0
  20. mirascope/api/_generated/errors/forbidden_error.py +15 -0
  21. mirascope/api/_generated/errors/internal_server_error.py +15 -0
  22. mirascope/api/_generated/errors/not_found_error.py +15 -0
  23. mirascope/api/_generated/organizations/__init__.py +25 -0
  24. mirascope/api/_generated/organizations/client.py +404 -0
  25. mirascope/api/_generated/organizations/raw_client.py +902 -0
  26. mirascope/api/_generated/organizations/types/__init__.py +23 -0
  27. mirascope/api/_generated/organizations/types/organizations_create_response.py +25 -0
  28. mirascope/api/_generated/organizations/types/organizations_create_response_role.py +7 -0
  29. mirascope/api/_generated/organizations/types/organizations_get_response.py +25 -0
  30. mirascope/api/_generated/organizations/types/organizations_get_response_role.py +7 -0
  31. mirascope/api/_generated/organizations/types/organizations_list_response_item.py +25 -0
  32. mirascope/api/_generated/organizations/types/organizations_list_response_item_role.py +7 -0
  33. mirascope/api/_generated/organizations/types/organizations_update_response.py +25 -0
  34. mirascope/api/_generated/organizations/types/organizations_update_response_role.py +7 -0
  35. mirascope/api/_generated/projects/__init__.py +17 -0
  36. mirascope/api/_generated/projects/client.py +482 -0
  37. mirascope/api/_generated/projects/raw_client.py +1058 -0
  38. mirascope/api/_generated/projects/types/__init__.py +15 -0
  39. mirascope/api/_generated/projects/types/projects_create_response.py +31 -0
  40. mirascope/api/_generated/projects/types/projects_get_response.py +31 -0
  41. mirascope/api/_generated/projects/types/projects_list_response_item.py +31 -0
  42. mirascope/api/_generated/projects/types/projects_update_response.py +31 -0
  43. mirascope/api/_generated/reference.md +1311 -0
  44. mirascope/api/_generated/types/__init__.py +20 -4
  45. mirascope/api/_generated/types/already_exists_error.py +24 -0
  46. mirascope/api/_generated/types/already_exists_error_tag.py +5 -0
  47. mirascope/api/_generated/types/database_error.py +24 -0
  48. mirascope/api/_generated/types/database_error_tag.py +5 -0
  49. mirascope/api/_generated/types/http_api_decode_error.py +1 -3
  50. mirascope/api/_generated/types/issue.py +1 -5
  51. mirascope/api/_generated/types/not_found_error_body.py +24 -0
  52. mirascope/api/_generated/types/not_found_error_tag.py +5 -0
  53. mirascope/api/_generated/types/permission_denied_error.py +24 -0
  54. mirascope/api/_generated/types/permission_denied_error_tag.py +7 -0
  55. mirascope/api/_generated/types/property_key.py +2 -2
  56. mirascope/api/_generated/types/{property_key_tag.py → property_key_key.py} +3 -5
  57. mirascope/api/_generated/types/{property_key_tag_tag.py → property_key_key_tag.py} +1 -1
  58. mirascope/llm/__init__.py +6 -2
  59. mirascope/llm/exceptions.py +28 -0
  60. mirascope/llm/providers/__init__.py +12 -4
  61. mirascope/llm/providers/anthropic/__init__.py +6 -1
  62. mirascope/llm/providers/anthropic/_utils/__init__.py +17 -5
  63. mirascope/llm/providers/anthropic/_utils/beta_decode.py +271 -0
  64. mirascope/llm/providers/anthropic/_utils/beta_encode.py +216 -0
  65. mirascope/llm/providers/anthropic/_utils/decode.py +39 -7
  66. mirascope/llm/providers/anthropic/_utils/encode.py +156 -64
  67. mirascope/llm/providers/anthropic/_utils/errors.py +46 -0
  68. mirascope/llm/providers/anthropic/beta_provider.py +328 -0
  69. mirascope/llm/providers/anthropic/model_id.py +10 -27
  70. mirascope/llm/providers/anthropic/model_info.py +87 -0
  71. mirascope/llm/providers/anthropic/provider.py +132 -145
  72. mirascope/llm/providers/base/__init__.py +2 -1
  73. mirascope/llm/providers/base/_utils.py +15 -1
  74. mirascope/llm/providers/base/base_provider.py +173 -58
  75. mirascope/llm/providers/google/_utils/__init__.py +2 -0
  76. mirascope/llm/providers/google/_utils/decode.py +55 -3
  77. mirascope/llm/providers/google/_utils/encode.py +14 -6
  78. mirascope/llm/providers/google/_utils/errors.py +49 -0
  79. mirascope/llm/providers/google/model_id.py +7 -13
  80. mirascope/llm/providers/google/model_info.py +62 -0
  81. mirascope/llm/providers/google/provider.py +13 -8
  82. mirascope/llm/providers/mlx/_utils.py +31 -2
  83. mirascope/llm/providers/mlx/encoding/transformers.py +17 -1
  84. mirascope/llm/providers/mlx/provider.py +12 -0
  85. mirascope/llm/providers/ollama/__init__.py +19 -0
  86. mirascope/llm/providers/ollama/provider.py +71 -0
  87. mirascope/llm/providers/openai/__init__.py +10 -1
  88. mirascope/llm/providers/openai/_utils/__init__.py +5 -0
  89. mirascope/llm/providers/openai/_utils/errors.py +46 -0
  90. mirascope/llm/providers/openai/completions/__init__.py +6 -1
  91. mirascope/llm/providers/openai/completions/_utils/decode.py +57 -5
  92. mirascope/llm/providers/openai/completions/_utils/encode.py +9 -8
  93. mirascope/llm/providers/openai/completions/base_provider.py +513 -0
  94. mirascope/llm/providers/openai/completions/provider.py +13 -447
  95. mirascope/llm/providers/openai/model_info.py +57 -0
  96. mirascope/llm/providers/openai/provider.py +30 -5
  97. mirascope/llm/providers/openai/responses/_utils/decode.py +55 -4
  98. mirascope/llm/providers/openai/responses/_utils/encode.py +9 -9
  99. mirascope/llm/providers/openai/responses/provider.py +33 -28
  100. mirascope/llm/providers/provider_id.py +11 -1
  101. mirascope/llm/providers/provider_registry.py +59 -4
  102. mirascope/llm/providers/together/__init__.py +19 -0
  103. mirascope/llm/providers/together/provider.py +40 -0
  104. mirascope/llm/responses/__init__.py +3 -0
  105. mirascope/llm/responses/base_response.py +4 -0
  106. mirascope/llm/responses/base_stream_response.py +25 -1
  107. mirascope/llm/responses/finish_reason.py +1 -0
  108. mirascope/llm/responses/response.py +9 -0
  109. mirascope/llm/responses/root_response.py +5 -1
  110. mirascope/llm/responses/usage.py +95 -0
  111. mirascope/ops/_internal/closure.py +62 -11
  112. {mirascope-2.0.0a3.dist-info → mirascope-2.0.0a5.dist-info}/METADATA +3 -3
  113. {mirascope-2.0.0a3.dist-info → mirascope-2.0.0a5.dist-info}/RECORD +115 -56
  114. mirascope/llm/providers/load_provider.py +0 -48
  115. mirascope/llm/providers/openai/shared/__init__.py +0 -7
  116. mirascope/llm/providers/openai/shared/_utils.py +0 -59
  117. {mirascope-2.0.0a3.dist-info → mirascope-2.0.0a5.dist-info}/WHEEL +0 -0
  118. {mirascope-2.0.0a3.dist-info → mirascope-2.0.0a5.dist-info}/licenses/LICENSE +0 -0
@@ -21,6 +21,7 @@ from ..tools import (
21
21
  from ..types import Jsonable
22
22
  from .base_response import BaseResponse
23
23
  from .finish_reason import FinishReason
24
+ from .usage import Usage
24
25
 
25
26
  if TYPE_CHECKING:
26
27
  from ..providers import ModelId, Params, ProviderId
@@ -42,6 +43,7 @@ class Response(BaseResponse[Toolkit, FormattableT]):
42
43
  input_messages: Sequence[Message],
43
44
  assistant_message: AssistantMessage,
44
45
  finish_reason: FinishReason | None,
46
+ usage: Usage | None,
45
47
  ) -> None:
46
48
  """Initialize a `Response`."""
47
49
  toolkit = tools if isinstance(tools, Toolkit) else Toolkit(tools=tools)
@@ -56,6 +58,7 @@ class Response(BaseResponse[Toolkit, FormattableT]):
56
58
  input_messages=input_messages,
57
59
  assistant_message=assistant_message,
58
60
  finish_reason=finish_reason,
61
+ usage=usage,
59
62
  )
60
63
 
61
64
  def execute_tools(self) -> Sequence[ToolOutput[Jsonable]]:
@@ -113,6 +116,7 @@ class AsyncResponse(BaseResponse[AsyncToolkit, FormattableT]):
113
116
  input_messages: Sequence[Message],
114
117
  assistant_message: AssistantMessage,
115
118
  finish_reason: FinishReason | None,
119
+ usage: Usage | None,
116
120
  ) -> None:
117
121
  """Initialize an `AsyncResponse`."""
118
122
  toolkit = (
@@ -129,6 +133,7 @@ class AsyncResponse(BaseResponse[AsyncToolkit, FormattableT]):
129
133
  input_messages=input_messages,
130
134
  assistant_message=assistant_message,
131
135
  finish_reason=finish_reason,
136
+ usage=usage,
132
137
  )
133
138
 
134
139
  async def execute_tools(self) -> Sequence[ToolOutput[Jsonable]]:
@@ -195,6 +200,7 @@ class ContextResponse(
195
200
  input_messages: Sequence[Message],
196
201
  assistant_message: AssistantMessage,
197
202
  finish_reason: FinishReason | None,
203
+ usage: Usage | None,
198
204
  ) -> None:
199
205
  """Initialize a `ContextResponse`."""
200
206
  toolkit = (
@@ -211,6 +217,7 @@ class ContextResponse(
211
217
  input_messages=input_messages,
212
218
  assistant_message=assistant_message,
213
219
  finish_reason=finish_reason,
220
+ usage=usage,
214
221
  )
215
222
 
216
223
  def execute_tools(self, ctx: Context[DepsT]) -> Sequence[ToolOutput[Jsonable]]:
@@ -283,6 +290,7 @@ class AsyncContextResponse(
283
290
  input_messages: Sequence[Message],
284
291
  assistant_message: AssistantMessage,
285
292
  finish_reason: FinishReason | None,
293
+ usage: Usage | None,
286
294
  ) -> None:
287
295
  """Initialize an `AsyncContextResponse`."""
288
296
  toolkit = (
@@ -301,6 +309,7 @@ class AsyncContextResponse(
301
309
  input_messages=input_messages,
302
310
  assistant_message=assistant_message,
303
311
  finish_reason=finish_reason,
312
+ usage=usage,
304
313
  )
305
314
 
306
315
  async def execute_tools(
@@ -11,6 +11,7 @@ from ..messages import Message
11
11
  from ..tools import ToolkitT
12
12
  from . import _utils
13
13
  from .finish_reason import FinishReason
14
+ from .usage import Usage
14
15
 
15
16
  if TYPE_CHECKING:
16
17
  from ..models import Model
@@ -55,12 +56,15 @@ class RootResponse(Generic[ToolkitT, FormattableT], ABC):
55
56
  """
56
57
  finish_reason: FinishReason | None
57
58
  """The reason why the LLM finished generating a response, if set.
58
-
59
+
59
60
  `finish_reason` is only set if the response did not finish generating normally,
60
61
  e.g. `FinishReason.MAX_TOKENS` if the model ran out of tokens before completing.
61
62
  When the response generates normally, `response.finish_reason` will be `None`.
62
63
  """
63
64
 
65
+ usage: Usage | None
66
+ """Token usage statistics for this response, if available."""
67
+
64
68
  format: Format[FormattableT] | None
65
69
  """The `Format` describing the structured response format, if available."""
66
70
 
@@ -0,0 +1,95 @@
1
+ """Provider-agnostic usage statistics for LLM API calls."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from dataclasses import dataclass
6
+ from typing import Any, Literal
7
+
8
+
9
+ @dataclass(kw_only=True)
10
+ class UsageDeltaChunk:
11
+ """A chunk containing incremental token usage information from a streaming response.
12
+
13
+ This represents a delta/increment in usage statistics as they arrive during streaming.
14
+ Multiple UsageDeltaChunks are accumulated to produce the final Usage object.
15
+ """
16
+
17
+ type: Literal["usage_delta_chunk"] = "usage_delta_chunk"
18
+
19
+ input_tokens: int = 0
20
+ """Delta in input tokens."""
21
+
22
+ output_tokens: int = 0
23
+ """Delta in output tokens."""
24
+
25
+ cache_read_tokens: int = 0
26
+ """Delta in cache read tokens."""
27
+
28
+ cache_write_tokens: int = 0
29
+ """Delta in cache write tokens."""
30
+
31
+ reasoning_tokens: int = 0
32
+ """Delta in reasoning/thinking tokens."""
33
+
34
+
35
+ @dataclass(kw_only=True)
36
+ class Usage:
37
+ """Token usage statistics from an LLM API call.
38
+
39
+ This abstraction captures common usage metrics across providers while preserving
40
+ access to the raw provider-specific usage data.
41
+ """
42
+
43
+ input_tokens: int = 0
44
+ """The number of input tokens used.
45
+
46
+ This includes ALL input tokens, including cache read and write tokens.
47
+
48
+ Will be 0 if not reported by the provider.
49
+ """
50
+
51
+ output_tokens: int = 0
52
+ """The number of output tokens used.
53
+
54
+ This includes ALL output tokens, including `reasoning_tokens` that may not be
55
+ in the user's visible output, or other "hidden" tokens.
56
+
57
+ Will be 0 if not reported by the provider.
58
+ """
59
+
60
+ cache_read_tokens: int = 0
61
+ """The number of tokens read from cache (prompt caching).
62
+
63
+ These are input tokens that were read from cache. Cache read tokens are generally
64
+ much less expensive than regular input tokens.
65
+
66
+ Will be 0 if not reported by the provider or if caching was not used.
67
+ """
68
+
69
+ cache_write_tokens: int = 0
70
+ """The number of tokens written to cache (cache creation).
71
+
72
+ These are input tokens that were written to cache, for future reuse and retrieval.
73
+ Cache write tokens are generally more expensive than uncached input tokens,
74
+ but may lead to cost savings down the line when they are re-read as cache_read_tokens.
75
+
76
+ Will be 0 if not reported by the provider or if caching was not used.
77
+ """
78
+
79
+ reasoning_tokens: int = 0
80
+ """The number of tokens used for reasoning/thinking.
81
+
82
+ Reasoning tokens are a subset of output_tokens that were generated as part of the model's
83
+ interior reasoning process. They are billed as output tokens, though they are generally
84
+ not shown to the user.
85
+
86
+ Will be 0 if not reported by the provider or if the model does not support reasoning.
87
+ """
88
+
89
+ raw: Any = None
90
+ """The raw usage object from the provider."""
91
+
92
+ @property
93
+ def total_tokens(self) -> int:
94
+ """The total number of tokens used (input + output)."""
95
+ return self.input_tokens + self.output_tokens
@@ -50,6 +50,55 @@ def _is_third_party(module: ModuleType, site_packages: set[str]) -> bool:
50
50
  )
51
51
 
52
52
 
53
+ class _RemoveVersionDecoratorTransformer(cst.CSTTransformer):
54
+ """CST transformer to remove @ops.version and @version decorators."""
55
+
56
+ @classmethod
57
+ def _is_version_decorator(cls, decorator: cst.Decorator) -> bool:
58
+ """Returns True if the decorator is @version or @ops.version."""
59
+ decorator_node = decorator.decorator
60
+
61
+ if isinstance(decorator_node, cst.Name) and decorator_node.value == "version":
62
+ return True
63
+ if (
64
+ isinstance(decorator_node, cst.Call)
65
+ and isinstance(decorator_node.func, cst.Name)
66
+ and decorator_node.func.value == "version"
67
+ ):
68
+ return True
69
+
70
+ if (
71
+ isinstance(decorator_node, cst.Attribute)
72
+ and isinstance(decorator_node.value, cst.Name)
73
+ and decorator_node.value.value == "ops"
74
+ and decorator_node.attr.value == "version"
75
+ ):
76
+ return True
77
+ if isinstance(decorator_node, cst.Call) and isinstance(
78
+ decorator_node.func, cst.Attribute
79
+ ):
80
+ func_attribute = decorator_node.func
81
+ if (
82
+ isinstance(func_attribute.value, cst.Name)
83
+ and func_attribute.value.value == "ops"
84
+ and func_attribute.attr.value == "version"
85
+ ):
86
+ return True
87
+
88
+ return False
89
+
90
+ def leave_FunctionDef(
91
+ self, original_node: cst.FunctionDef, updated_node: cst.FunctionDef
92
+ ) -> cst.FunctionDef:
93
+ """Returns function definition with @version/@ops.version decorators removed."""
94
+ new_decorators = [
95
+ decorator
96
+ for decorator in updated_node.decorators
97
+ if not self._is_version_decorator(decorator)
98
+ ]
99
+ return updated_node.with_changes(decorators=new_decorators)
100
+
101
+
53
102
  class _RemoveDocstringTransformer(cst.CSTTransformer):
54
103
  """CST transformer to remove docstrings from functions and classes."""
55
104
 
@@ -125,14 +174,9 @@ def _clean_source_code(
125
174
  if docstr_flag in ("1", "true", "yes"):
126
175
  return source.rstrip()
127
176
  module = cst.parse_module(source)
128
-
129
- transformer = _RemoveDocstringTransformer(exclude_fn_body=exclude_fn_body)
130
- new_module = module.visit(transformer)
131
-
132
- code = new_module.code
133
- code = code.rstrip()
134
-
135
- return code
177
+ module = module.visit(_RemoveVersionDecoratorTransformer())
178
+ module = module.visit(_RemoveDocstringTransformer(exclude_fn_body=exclude_fn_body))
179
+ return module.code.rstrip()
136
180
 
137
181
 
138
182
  @dataclass(frozen=True)
@@ -596,9 +640,9 @@ def _clean_source_from_string(source: str, exclude_fn_body: bool = False) -> str
596
640
  """Returns cleaned source code string with optional docstring removal."""
597
641
  source = dedent(source)
598
642
  module = cst.parse_module(source)
599
- transformer = _RemoveDocstringTransformer(exclude_fn_body=exclude_fn_body)
600
- new_module = module.visit(transformer)
601
- return new_module.code.rstrip()
643
+ module = module.visit(_RemoveVersionDecoratorTransformer())
644
+ module = module.visit(_RemoveDocstringTransformer(exclude_fn_body=exclude_fn_body))
645
+ return module.code.rstrip()
602
646
 
603
647
 
604
648
  def _get_class_source_from_method(method: Callable[..., Any]) -> str:
@@ -694,6 +738,13 @@ class _DependencyCollector:
694
738
  # For Python 3.13+
695
739
  return definition.func # pyright: ignore[reportFunctionMemberAccess] # pragma: no cover
696
740
 
741
+ if (
742
+ (wrapped_function := getattr(definition, "fn", None)) is not None
743
+ and not hasattr(definition, "__qualname__")
744
+ and callable(wrapped_function)
745
+ ):
746
+ return wrapped_function
747
+
697
748
  return definition
698
749
 
699
750
  def _get_source_code(self, definition: Callable[..., Any] | type) -> str | None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mirascope
3
- Version: 2.0.0a3
3
+ Version: 2.0.0a5
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/docs/mirascope/v2
@@ -51,7 +51,7 @@ Requires-Dist: httpx>=0.27.0
51
51
  Requires-Dist: pydantic>=2.0.0
52
52
  Requires-Dist: typing-extensions>=4.10.0
53
53
  Provides-Extra: all
54
- Requires-Dist: anthropic<1.0,>=0.72.0; extra == 'all'
54
+ Requires-Dist: anthropic<1.0,>=0.75.0; extra == 'all'
55
55
  Requires-Dist: google-genai<2,>=1.48.0; extra == 'all'
56
56
  Requires-Dist: libcst>=1.8.6; extra == 'all'
57
57
  Requires-Dist: mcp<2,>=1.0.0; extra == 'all'
@@ -70,7 +70,7 @@ Requires-Dist: pillow<11,>=10.4.0; extra == 'all'
70
70
  Requires-Dist: proto-plus>=1.24.0; extra == 'all'
71
71
  Requires-Dist: pydantic-settings>=2.12.0; extra == 'all'
72
72
  Provides-Extra: anthropic
73
- Requires-Dist: anthropic<1.0,>=0.72.0; extra == 'anthropic'
73
+ Requires-Dist: anthropic<1.0,>=0.75.0; extra == 'anthropic'
74
74
  Provides-Extra: api
75
75
  Requires-Dist: pydantic-settings>=2.12.0; extra == 'api'
76
76
  Provides-Extra: google
@@ -3,10 +3,17 @@ mirascope/api/__init__.py,sha256=9EOn04v3kFagbL1_RTpT_uOwUf_lZeFXVb69g4uaNfs,201
3
3
  mirascope/api/client.py,sha256=3JrrC2zNlEttAUXHGN1kbDpGczyI9zCNiSZ3dEyqtAI,8253
4
4
  mirascope/api/settings.py,sha256=NeROu5F0xFDUs0jIPFhD_FzBgVjI2mgGkMHeVquoDIM,2125
5
5
  mirascope/api/_generated/README.md,sha256=7-B_qhXCHaXKX9FPG-G112hKmXM64uM6eNqmSdpaL_8,6079
6
- mirascope/api/_generated/__init__.py,sha256=dAqrMCODDQl2tnoV3R4_D3SG2zUnD_G5bZxJCDfJ1Xc,4273
7
- mirascope/api/_generated/client.py,sha256=975mpu-ifjCwjiXip1HQ3EnXFkT7wY2LqijxXNohFPs,5782
6
+ mirascope/api/_generated/__init__.py,sha256=Gkxd073vC9Oku7nED0lguldqOU9LCUmmZ95mXIS8pJE,6308
7
+ mirascope/api/_generated/client.py,sha256=Mm_6SKncKaeEsjG7mAELrglMeCwzaluKoUtWnixjraY,6751
8
8
  mirascope/api/_generated/environment.py,sha256=zrGdNnUZkaUyUtaamv2nKGfT9KZA5aCeWdSSN2dNphA,265
9
- mirascope/api/_generated/reference.md,sha256=nw3G6SxWmHg3_SO92s8LmYKARC_MEoeTR-Kdb4EytO0,2448
9
+ mirascope/api/_generated/reference.md,sha256=dY3ZAXazhXcWGEElDsmmWUEGh3Dpqwrrp6J1GqhdZnE,16788
10
+ mirascope/api/_generated/api_keys/__init__.py,sha256=SEqsc8eFGslfkVscvHABTONAy9ElPqgASfqwhwlAAzc,257
11
+ mirascope/api/_generated/api_keys/client.py,sha256=4lskg3QWcyrm1i8OOgAR6tP4vy8myLFFByDqSstMIsY,11209
12
+ mirascope/api/_generated/api_keys/raw_client.py,sha256=FBiXrm7_FTyEguj-T--Vz3rHCKbU0akP1UnnIBU3-30,30994
13
+ mirascope/api/_generated/api_keys/types/__init__.py,sha256=sycSAknyK7WLoSQ9upf-g16-jExxkBXKMFLJKrg6esk,350
14
+ mirascope/api/_generated/api_keys/types/api_keys_create_response.py,sha256=zxCa4hPxhokIxekq8sTGcrIhrDGFVnlqkBtTQ87yt2Q,1161
15
+ mirascope/api/_generated/api_keys/types/api_keys_get_response.py,sha256=CJ0ULTnhUl2McMlFMu9utH69U-x62xd2RCAL6eI-mK8,1145
16
+ mirascope/api/_generated/api_keys/types/api_keys_list_response_item.py,sha256=-hCwR2b2IoU3FO6xaz1fwprFzz-etUMwQnrGjUSuDYQ,1150
10
17
  mirascope/api/_generated/core/__init__.py,sha256=lTcqUPXcx4112yLDd70RAPeqq6tu3eFMe1pKOqkW9JQ,1562
11
18
  mirascope/api/_generated/core/api_error.py,sha256=44vPoTyWN59gonCIZMdzw7M1uspygiLnr3GNFOoVL2Q,614
12
19
  mirascope/api/_generated/core/client_wrapper.py,sha256=IDwIwiGeWsn5PvxRr8Cd_mZtNLrKYMbypyz0pfHloIA,1609
@@ -24,14 +31,46 @@ mirascope/api/_generated/core/serialization.py,sha256=UO5lcAerNrG-RfFLXPVU5MNV4x
24
31
  mirascope/api/_generated/docs/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7THa_23pbUzqhXJa4,85
25
32
  mirascope/api/_generated/docs/client.py,sha256=xeGkT4Oa2iiZruR3Xi7v4rDAx8blIkp6mIqy0RFpzBw,2507
26
33
  mirascope/api/_generated/docs/raw_client.py,sha256=GpvLeVDBrti9DqCjb3IHwEucR-vE899HEiDRthVtEDc,4815
27
- mirascope/api/_generated/errors/__init__.py,sha256=231FpxMihJ3fLHCNdI7nHyV1j0osaRyZsGC862F0O8I,163
34
+ mirascope/api/_generated/environments/__init__.py,sha256=x9Fz9SsnkYoHC5xg_wEN5IF6hYdRSxjv3YRSfPG2C6c,385
35
+ mirascope/api/_generated/environments/client.py,sha256=ILvVvUopS7zVO57giQwUHVVjoSe_4VXC5r22lqjQakQ,13391
36
+ mirascope/api/_generated/environments/raw_client.py,sha256=SMGOQqcMKbYE6_TpXugO8ghkToazEJRrYV-I24nJ4zY,39591
37
+ mirascope/api/_generated/environments/types/__init__.py,sha256=mMud06Aewplszo1rUPu16IHO3ZdYFZ_MRvZFEiLMTIk,510
38
+ mirascope/api/_generated/environments/types/environments_create_response.py,sha256=GxOWifa4dNdTv401nfLsTopHp65rtIKEyQszz0nQACg,738
39
+ mirascope/api/_generated/environments/types/environments_get_response.py,sha256=ckAAsdrAmpFFNhd1XPLK21veVzLZ08pdeEc_Y4c7JZE,735
40
+ mirascope/api/_generated/environments/types/environments_list_response_item.py,sha256=cBo_J6ZBKngKNaKKlEvRL1Mt9CvuRwlt_3nzaolGF08,740
41
+ mirascope/api/_generated/environments/types/environments_update_response.py,sha256=XyP27SXQ77aTzxImi3xX5D5CoSsajAY0YWDlHjYTZC0,738
42
+ mirascope/api/_generated/errors/__init__.py,sha256=0pdSJizeQJozAkZFZcM3pXN6t6BIcqqZE9AAhHJIDPk,445
28
43
  mirascope/api/_generated/errors/bad_request_error.py,sha256=RAVSjgWr8jM993BLo-gO4c7H1ICDBI8a4MJ0UEen45Q,421
44
+ mirascope/api/_generated/errors/conflict_error.py,sha256=U4FRUqIi0oKLxDMCtK1WD-cPcdoJA-OlVQ6wtPm-QnM,418
45
+ mirascope/api/_generated/errors/forbidden_error.py,sha256=jej2hsAPAgWhNhsa8SJcNSNMmY4cqXDmVKdJc007hUE,428
46
+ mirascope/api/_generated/errors/internal_server_error.py,sha256=bBWSdhuiUZFBZNm5qS29zIyOsC2GdKErQNKqYog-t34,408
47
+ mirascope/api/_generated/errors/not_found_error.py,sha256=NFhOrCV76REeRC-XL-cklnw6jQceSKYGYsM9z8ULg_0,416
29
48
  mirascope/api/_generated/health/__init__.py,sha256=UN1u0qzFG8zDGf3CABrpMNNEP467lQZKLQfTOpkwm2E,215
30
49
  mirascope/api/_generated/health/client.py,sha256=SvPGUe72VyNoA7feW9iE4RDTzGIQ_pkXiR-d2Bg-cqU,2548
31
50
  mirascope/api/_generated/health/raw_client.py,sha256=XRhraAPYg3ur0m9zMtQV86izy-_xdjpF3mDimytfFow,4523
32
51
  mirascope/api/_generated/health/types/__init__.py,sha256=dYIZPgww1FuKOKJTeUWMDad1XYTzQaxp8jbwsfI_THI,272
33
52
  mirascope/api/_generated/health/types/health_check_response.py,sha256=CcwGy-ROHpWfgKcRxw537fsnO66bxKtT5eo4sealVgo,681
34
53
  mirascope/api/_generated/health/types/health_check_response_status.py,sha256=eCSX3a4cA5zETaIbLvtYkSeS3585DuJa9VnM1fw3VxE,155
54
+ mirascope/api/_generated/organizations/__init__.py,sha256=AKFDrQ1SedKfX5Zsv8Kx8ynS8GYInaAm-jNvz1zFQiQ,695
55
+ mirascope/api/_generated/organizations/client.py,sha256=qHBuvDaAS4MQG3JUGC4jUwgPo-PMG4twuQcXbk2hT_Q,10303
56
+ mirascope/api/_generated/organizations/raw_client.py,sha256=5W5qnQNgDcEq63AaNaiKD8rUNYn1BU-IG6N9xrLCCYU,32779
57
+ mirascope/api/_generated/organizations/types/__init__.py,sha256=wr6VfMIdBcNlA3qelxtxJZp3fvXwtr-DwsQ-PKlPaCs,996
58
+ mirascope/api/_generated/organizations/types/organizations_create_response.py,sha256=J7Sp5j4EEZtpm4CK_dboRk9iJYR42K5GG2AYiyeu0PY,705
59
+ mirascope/api/_generated/organizations/types/organizations_create_response_role.py,sha256=OsgWOdAazUDPZBwhQ8piqB5dPYPFGRGXUvzZxY_cwT0,189
60
+ mirascope/api/_generated/organizations/types/organizations_get_response.py,sha256=KlxQNWGKLSPwgVyU-qmclUQE4yzIoRkOhidO8Qy067I,693
61
+ mirascope/api/_generated/organizations/types/organizations_get_response_role.py,sha256=zYLPJtdYFk8Mz6e1yxpirva6Co2aaqKQksFOM4lCjME,186
62
+ mirascope/api/_generated/organizations/types/organizations_list_response_item.py,sha256=sg-aiwhOU6JLtAbNGACMJMLoMPvTFo3IP-9Pfgp6XZ8,714
63
+ mirascope/api/_generated/organizations/types/organizations_list_response_item_role.py,sha256=H2a1FebiZ9nAIZ92TnHyO4w3oRr0L4EAc58vaJXTW5U,191
64
+ mirascope/api/_generated/organizations/types/organizations_update_response.py,sha256=V7o68hWmAnQpuPQ9gYekO5A-PD0Z6pjgzKPX55N1FUs,705
65
+ mirascope/api/_generated/organizations/types/organizations_update_response_role.py,sha256=9Ya26-vC-PGq5hEmDlfB1ov6G2HjHYezblbnFjLj5Pk,189
66
+ mirascope/api/_generated/projects/__init__.py,sha256=WuwOMLclS5a2OFxwBtCiBjI9De3OfD67DcZ-iI6IrAY,353
67
+ mirascope/api/_generated/projects/client.py,sha256=kRz2jOIQ_b4RPPYVAUyL0eh4kuaovrDiOCAphplvErU,11963
68
+ mirascope/api/_generated/projects/raw_client.py,sha256=Xv1I4SM4p7ltXFNlxDNF0JzAopCJPovNc2uqAjuEyVE,38401
69
+ mirascope/api/_generated/projects/types/__init__.py,sha256=s4-7DLBngfy8scBC2sd149ACK2f7T6WoFkPIDWCi89Q,462
70
+ mirascope/api/_generated/projects/types/projects_create_response.py,sha256=o8KUH8AkZnuJNLd-fXK_IEdN7KRWNwNKeJ8TcTEMZ9Q,869
71
+ mirascope/api/_generated/projects/types/projects_get_response.py,sha256=l4DvJzX9UHGUeS3NXUk9A8bIbNfwEAi6w-4bEMqXaMY,866
72
+ mirascope/api/_generated/projects/types/projects_list_response_item.py,sha256=7LubNKwdPDtxCHvTXokIgDneh1diJ2N4YBdX8W9cWms,871
73
+ mirascope/api/_generated/projects/types/projects_update_response.py,sha256=Xy-q2SW-tjBpqh2bFIcAZmmR4WwWpZllCXYO8u1Hd_0,869
35
74
  mirascope/api/_generated/traces/__init__.py,sha256=SJinJhQCXCPrUYr9OfVMMBkS4qFW2ij9fm7Bc-tDF3o,3543
36
75
  mirascope/api/_generated/traces/client.py,sha256=FXZu6X_T-8oWEaN51KG2sTX8zDu2TJkRN3NWfElPKJQ,5374
37
76
  mirascope/api/_generated/traces/raw_client.py,sha256=r-QSTNCxvr3SxJe05z_XRvYgWjv9RZvA46EMZSRq1vQ,5982
@@ -59,16 +98,24 @@ mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_
59
98
  mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_status.py,sha256=V5HwPpOY0WCScTE6OJe55hEYkKoTbLM4B6qCFicsUUg,668
60
99
  mirascope/api/_generated/traces/types/traces_create_response.py,sha256=LMCVtItwbrnqx9C4v9gkUxYgk4Ut6fJHziyQ_3W8kwE,867
61
100
  mirascope/api/_generated/traces/types/traces_create_response_partial_success.py,sha256=9pTxUVArKBy0W3demKDBmfANGRYvhoDN6dt6ZhjjQpU,881
62
- mirascope/api/_generated/types/__init__.py,sha256=RYBNlOlI5XVJHOoBD6XIw9lrJLNNJFStsxSp0fgM-c4,557
63
- mirascope/api/_generated/types/http_api_decode_error.py,sha256=ovodKRp3NOb3unLl1CO55-3HGfUN-Z7Cqe63e4Jzb1Q,895
101
+ mirascope/api/_generated/types/__init__.py,sha256=A8hRek8If7ZF2TKEkBvPAbofmYp8MwxK4gS2wHcdaEw,1198
102
+ mirascope/api/_generated/types/already_exists_error.py,sha256=DgG3dF2aCAoO8LAd4AMRY4ysxsjJC2qdhrq9Xylhpt4,683
103
+ mirascope/api/_generated/types/already_exists_error_tag.py,sha256=Gkkp8M2D68eeecqivCeLZdEQ9s_E4-Wian0_SVrRMGU,167
104
+ mirascope/api/_generated/types/database_error.py,sha256=F76RewoU6y1WAFHKWBsAj8M5VLtczL8abzM6uJwTDug,683
105
+ mirascope/api/_generated/types/database_error_tag.py,sha256=f7yylB3n3uxnf99qE3w3jLz5F5lCx-thc7px9SvvK9E,157
106
+ mirascope/api/_generated/types/http_api_decode_error.py,sha256=hAqR-MUDmNtEuK_AhNgsgWuD0NZm-jb4uZL9WJz4fIw,765
64
107
  mirascope/api/_generated/types/http_api_decode_error_tag.py,sha256=4brH10CC1DEuSmruTFmEuy9rVgpucv9Wsde-4g6oYQM,167
65
- mirascope/api/_generated/types/issue.py,sha256=hIVWBDlk95UqwXjr_kT_h1Nr2AHPX8-XwB7AwoJmAfI,1157
108
+ mirascope/api/_generated/types/issue.py,sha256=iQeOA7wIh2uFEW4hI-fMxT6jSG7z6T3kwOFOKK-207A,1011
66
109
  mirascope/api/_generated/types/issue_tag.py,sha256=C4AQ5_ewX0CacDGg9pHKh6DW4yEDVS4QmckOH3W_TsI,316
67
- mirascope/api/_generated/types/property_key.py,sha256=KVmanwCdYxRPJOLIcmCoAGrSWH8t5hMjn8O9e0lD-tQ,181
68
- mirascope/api/_generated/types/property_key_tag.py,sha256=r5sa9IHwLeTm_qCnyeqYtdITkvSnagzDznQy416QsIw,826
69
- mirascope/api/_generated/types/property_key_tag_tag.py,sha256=yUdDrbnhJ_p_2wyfSq7cvagJrjTKtQG8k_pegrOYSjw,151
70
- mirascope/llm/__init__.py,sha256=1WFziSHxiu2WlXPxbYdAXQX_4iV0uQf9qTgM0FZiiKk,5075
71
- mirascope/llm/exceptions.py,sha256=81b5-3jUe68TWmzGDH7OP3jrDli5RoT2yfyBC7ukvoM,3586
110
+ mirascope/api/_generated/types/not_found_error_body.py,sha256=BgfmnSIh6XPWq78_5U1UWcOywihwO2tsBF8KNgA0gbw,667
111
+ mirascope/api/_generated/types/not_found_error_tag.py,sha256=dQtLl0Mr8uW56l-DVlHqaHxxUaUu4s5p8Dk2nRcx4yk,157
112
+ mirascope/api/_generated/types/permission_denied_error.py,sha256=J1KZQ3hs_In0DnzVSH5Xq_6sBw7TYuWXxMilePiI8MA,695
113
+ mirascope/api/_generated/types/permission_denied_error_tag.py,sha256=4bockT3ftu1Fda3mXzXb5-2xMzQsklnduXIJXGJ08SY,179
114
+ mirascope/api/_generated/types/property_key.py,sha256=G_qu_0R1rdi2eY-rhTC3NO-IrbdHR0AcgdjSdwIOkBE,181
115
+ mirascope/api/_generated/types/property_key_key.py,sha256=cEKRj67H_IP7Gl-cRqQkLIoFL0TFz4zbhwvBeLV8r7Y,696
116
+ mirascope/api/_generated/types/property_key_key_tag.py,sha256=aNrMYf3B6V098Z9-tqlkNH1XvbkX9t2se3x-qbVe0CQ,151
117
+ mirascope/llm/__init__.py,sha256=2xRvSo1yIUrT6GuU0X6btDLsBjGtTeXw2HUxXvnYtxA,5163
118
+ mirascope/llm/exceptions.py,sha256=rxkADeNzENu898sp2YFa9yhsUlYFczX7mh0Su7cmw0I,4831
72
119
  mirascope/llm/calls/__init__.py,sha256=rnQ29w8x_EAEecZhP2i6N6u_qE-TO3sBZGAztF3o2QQ,273
73
120
  mirascope/llm/calls/calls.py,sha256=tb0GTfH4dxna5RvRjcrS969QPDgWT45t6J3khHzkQ9s,11783
74
121
  mirascope/llm/calls/decorator.py,sha256=F2KN-Ur25NyYZ8ir5yDozKP5X_bZTjQGMKTerEDrFnc,8766
@@ -100,63 +147,75 @@ mirascope/llm/prompts/_utils.py,sha256=kwSUdP4etxapheLoQPtB2UFXJs13o2IACWNdEVb_d
100
147
  mirascope/llm/prompts/decorator.py,sha256=IcQv2lktag5gioEYp5aPtaIe66ZR-i1gaYpj7jk2qVs,6985
101
148
  mirascope/llm/prompts/prompts.py,sha256=VcuGDbqT4Z3mBgJIaa0RsTSGkck1MyaxdufkgKHMVcU,14041
102
149
  mirascope/llm/prompts/protocols.py,sha256=auopJnLAfOognCFVVnXrvb4zFj3102Ofi2iVHfublM0,2242
103
- mirascope/llm/providers/__init__.py,sha256=5DSRSHQ5fppt0MR7HefsJWtUP6tcfg-kQPgwj3kk9dk,902
150
+ mirascope/llm/providers/__init__.py,sha256=JEsCpCwzG55LVLfP3ckGKnBFMcEnM9KRuYrtn-h626c,1114
104
151
  mirascope/llm/providers/_missing_import_stubs.py,sha256=CO9FZgM0r1jWoTPOzc6G_fJ8pLUPK1K_c8Pg9OWfoDc,1581
105
- mirascope/llm/providers/load_provider.py,sha256=Ui4ZRZbIFnsnu092YOe0BENtE93D8l2SHy412qL8Ugc,1837
106
152
  mirascope/llm/providers/model_id.py,sha256=qr7RKkP_3Blgxjzw_HvQVJLM1aTzsP-jVFsycz0itI8,292
107
- mirascope/llm/providers/provider_id.py,sha256=oxi6XRLETdamgzuMcgOyxIsUq6m0n2qBZMZGIS-O6EE,453
108
- mirascope/llm/providers/provider_registry.py,sha256=bn_a3bPqCCN4bq1BGjRIo0gqKKWdbb-pyGpuUgppLQ4,5554
109
- mirascope/llm/providers/anthropic/__init__.py,sha256=P98Qc1ktZGa8WqenunmgMV43Fp-fIkwidXOAjDRNOeY,640
110
- mirascope/llm/providers/anthropic/model_id.py,sha256=aMpVde8oeEvNRCS9A9p73qF5deL4jXNQ_87zDoNRN94,1311
111
- mirascope/llm/providers/anthropic/provider.py,sha256=BiEnhLz82Wy66t7nUG0NP3pfAmiIfBWX334j920IyQE,15217
112
- mirascope/llm/providers/anthropic/_utils/__init__.py,sha256=U2VNfEJCaqorAJBZDV7p3rFEp1fyk7vSitYFv_5G5Cs,232
113
- mirascope/llm/providers/anthropic/_utils/decode.py,sha256=3nQOt8Rh5LEESni2EZLIuFYK5wLCldf5CUI0lBHTUP8,9134
114
- mirascope/llm/providers/anthropic/_utils/encode.py,sha256=JKF353LVdM5_0dtV5hs27fU5C79f2n1TeclzIZ6BjLU,9509
115
- mirascope/llm/providers/base/__init__.py,sha256=TdIwuefY-hZmKJWYyMBLOF6iR6dlsJeK7LnOVOn25YE,291
116
- mirascope/llm/providers/base/_utils.py,sha256=kZHvuDsJoHyySqyEBxSNe9X616-wce2Cvk4H0siXqwo,7015
117
- mirascope/llm/providers/base/base_provider.py,sha256=y4Vuy9Nezq1IIZXBpLSpSjbJyU1CFFCiVOu8LMqnQUI,46506
153
+ mirascope/llm/providers/provider_id.py,sha256=ueIYpQaUgNWeiAA2fuqldPWKxsd9rTlOu8k6jmpmesY,970
154
+ mirascope/llm/providers/provider_registry.py,sha256=uNpDeNMmvMYk5xrhHLAsyY0fhHo6aX7KZkq9JPLLyRY,7733
155
+ mirascope/llm/providers/anthropic/__init__.py,sha256=7G_udubLtuCSD9rtBD1t9vYd_FrqXM2UGdN6rE02VTE,854
156
+ mirascope/llm/providers/anthropic/beta_provider.py,sha256=pz6_XM0hWyWcj_ZiiyodYgsxuXTE20y7Va_NER1adbs,11655
157
+ mirascope/llm/providers/anthropic/model_id.py,sha256=3Wf4cZG8NUO3i7dHmw3At46JMfTuRWpS8pKYX2s-8B8,715
158
+ mirascope/llm/providers/anthropic/model_info.py,sha256=YuklafFMIpkyLBJSBB0XlB6MK9Bz6hp9Z6APxJ9G1j4,2965
159
+ mirascope/llm/providers/anthropic/provider.py,sha256=s2FXex5MmUjEwlWL2djrI7_Vm32yQs1vALPtBSF5Dkk,14966
160
+ mirascope/llm/providers/anthropic/_utils/__init__.py,sha256=e3jb2NSsWYYgEQ-9r6qOmsnhliEKiZicQ6hI7jRSs4g,586
161
+ mirascope/llm/providers/anthropic/_utils/beta_decode.py,sha256=NyEVPZ7_504-u_AnxnBB0A7S-fDlnrCC3Y3Rpvmzqxs,10032
162
+ mirascope/llm/providers/anthropic/_utils/beta_encode.py,sha256=E5cXJog63xfekJ-SX2-K0TJl2CE22zQWmq-hMv-iCFI,7280
163
+ mirascope/llm/providers/anthropic/_utils/decode.py,sha256=tMcEEEM9WbTxR7kiw0xEY3ILkNndkfwd7azYBOZpIAA,10268
164
+ mirascope/llm/providers/anthropic/_utils/encode.py,sha256=HjJvBijtGI-aWbncCKHY02fdXyApC-OlH6An05pQgOc,13036
165
+ mirascope/llm/providers/anthropic/_utils/errors.py,sha256=aYwYwePZj6P7dGKgb50YXisPppXKQDGfyCBnwyb64OY,1714
166
+ mirascope/llm/providers/base/__init__.py,sha256=RkSlx0iVrPIDaJeiaTBm2t8Xu72fCTHJDYX_9H8gS4Q,333
167
+ mirascope/llm/providers/base/_utils.py,sha256=_7BJsYQ80EFPwooh0RbmSOV-P86S_52Fs0HnaLFw7fU,7615
168
+ mirascope/llm/providers/base/base_provider.py,sha256=Ze-KIbt279VZWeiaT0OXsGaRScO1c5sJEAIlnClw734,51826
118
169
  mirascope/llm/providers/base/kwargs.py,sha256=pjaHVqtlmScUBqG8ZAllVaLoepdKE-KYl2eTqzOBXm0,406
119
170
  mirascope/llm/providers/base/params.py,sha256=x2WLz0s5rMZ3u3GBGQmRlYGjecePtsLglHSJBLh35YE,3670
120
171
  mirascope/llm/providers/google/__init__.py,sha256=FgBiQApWbD0pnZuJlYVvoi_LN-5WRg6rsOtfILJRwlk,596
121
172
  mirascope/llm/providers/google/message.py,sha256=ryNsMKPSyBSVXl_H0MQEaSiWC3FFybjxIUuORNSiKTk,179
122
- mirascope/llm/providers/google/model_id.py,sha256=N17Z4QCI5MiV4fTp9q3LC-d3BL60Cbr37xpEK48fdnU,724
123
- mirascope/llm/providers/google/provider.py,sha256=TBJUl5N5GusjSlcxeVS0FAR31bgcwWOd2Z4BwbJpF-A,15196
124
- mirascope/llm/providers/google/_utils/__init__.py,sha256=U2VNfEJCaqorAJBZDV7p3rFEp1fyk7vSitYFv_5G5Cs,232
125
- mirascope/llm/providers/google/_utils/decode.py,sha256=eBgV38gZg95tnaC11pFTzjfVsNodO2nwaiMZyO_BVLY,9104
126
- mirascope/llm/providers/google/_utils/encode.py,sha256=us2M48CyIpCe1LFcCDhd031NFT6_0cUrodoevkOVzl0,10888
173
+ mirascope/llm/providers/google/model_id.py,sha256=vZJeKT-_J7oiFT5AkudintCFE4DhFJ-VZOFOcLP1rn0,603
174
+ mirascope/llm/providers/google/model_info.py,sha256=EwR2YwdFoDxF0cWF2ZMRwNuhxrPKYZIEdjHHAZ10j7I,1982
175
+ mirascope/llm/providers/google/provider.py,sha256=icrrXhelmM5BxOdJDx1PuhXrA96GsX_nWtFWuhbtcQ4,15523
176
+ mirascope/llm/providers/google/_utils/__init__.py,sha256=MXG48jLez-S8hyMV4QVg83OLi20mayqbk-o0gYZ39mQ,293
177
+ mirascope/llm/providers/google/_utils/decode.py,sha256=vxtDbCb6UlAFN0b5rrirfQ9xRhMSQD0Ai3SEq5rFz24,11205
178
+ mirascope/llm/providers/google/_utils/encode.py,sha256=i0if8XnD662qJaeYW77b_oqlDrg9Qwi3hgZy1CoNACI,11345
179
+ mirascope/llm/providers/google/_utils/errors.py,sha256=ci410dXx6NuKAkzWJFZjrefhGRnxLUXX3r0W4Uz7Xkg,1381
127
180
  mirascope/llm/providers/mlx/__init__.py,sha256=zUYFUn36AVxHaN0hgi-RTwVeO2eydz9B-8OkAsB9aOY,574
128
- mirascope/llm/providers/mlx/_utils.py,sha256=TPVNIhvqdSD9duhbZw73FgKtfYgs7hs0bS8LvnpBoU8,3321
181
+ mirascope/llm/providers/mlx/_utils.py,sha256=2mMac0wUxbwsdlTI8MwO7aJ_bTJrvAE0LQusSluZMFw,4142
129
182
  mirascope/llm/providers/mlx/mlx.py,sha256=SfNpbKkRpJMW984-wVDyhzgMXfUL5Huo3tQfH3OvbPo,8116
130
183
  mirascope/llm/providers/mlx/model_id.py,sha256=oHj-ptT4vTPcatHtjDSw7Z7-xs8ACMfYeRoEsKkM6yE,618
131
- mirascope/llm/providers/mlx/provider.py,sha256=31uHiA-ar4JGU26FnLKhpHz1h_LN2k87VGZto-MqTyo,13879
184
+ mirascope/llm/providers/mlx/provider.py,sha256=3J1oX9G1xXvnXGIAf9SMDKWxi1SEuztF2SfLwmwO9Xg,14330
132
185
  mirascope/llm/providers/mlx/encoding/__init__.py,sha256=qdI7HELeha1wj1OoOn1jH0Xta6yNkI_SDlYbqoWUd0c,163
133
186
  mirascope/llm/providers/mlx/encoding/base.py,sha256=5cQX_8RBEgrfiHiUD7waPAmi3Sy_0gkBsFpRvf7VIdE,2228
134
- mirascope/llm/providers/mlx/encoding/transformers.py,sha256=EosK5v52Bvk233H-G9yW-yCiGUH-5y4OGPHZUMRnZI0,4541
135
- mirascope/llm/providers/openai/__init__.py,sha256=oxNOUSsX9G7xt9yLImEcOp6E5PFDITOGzXphxFxuWDY,157
187
+ mirascope/llm/providers/mlx/encoding/transformers.py,sha256=8tAK9kJfcVRn8ORX6eOeOWSQFd32sJYqPMoRhwlZoYM,5011
188
+ mirascope/llm/providers/ollama/__init__.py,sha256=PTHoML03Z5aJLl0B4iQTuBq35o_NV_w7I3gKQEypXu8,438
189
+ mirascope/llm/providers/ollama/provider.py,sha256=9c0pKDtc--H0SLiyqrjBKzt-Ya8gE9qZ-jpZvKEG90Y,2311
190
+ mirascope/llm/providers/openai/__init__.py,sha256=D1b01XExoHIDdPdoWEBtnEZLZdEL54ASqOrPnt3YfAE,454
136
191
  mirascope/llm/providers/openai/model_id.py,sha256=XDQxd2BgG_YIGwzyTRNaySRXoU80-q0AR-xOdtvpB8I,1009
137
- mirascope/llm/providers/openai/model_info.py,sha256=capCjAHglWgK8ge8YBdDfJnf8FuEnGBROhL0iB6-v1M,7903
138
- mirascope/llm/providers/openai/provider.py,sha256=Cz-bU71n6E4jU2hQ9lMqPJ-WYkr6ZRabgLGrPOYk-Do,14303
139
- mirascope/llm/providers/openai/completions/__init__.py,sha256=mr61sdQdbwyy1IKY4LISv3gi8jTfDsx8dXOcCVIsyh4,515
140
- mirascope/llm/providers/openai/completions/provider.py,sha256=J-Ts_bY7p6EzgbLhBbYCsVEl-gRP0pfPvDdYV1jZjV8,16008
192
+ mirascope/llm/providers/openai/model_info.py,sha256=DN-y-qzq2UahK11hJUe12SB1upRD6BWZkTLhEX092sY,9563
193
+ mirascope/llm/providers/openai/provider.py,sha256=ius7GUMcrEyaEDltZAsp1JFaYJRhlV2EbKkbybxi7Fw,15223
194
+ mirascope/llm/providers/openai/_utils/__init__.py,sha256=jzAtRZEqvbHnJw8iEillZU4tWXedmtTWuE_PqyYUVvM,101
195
+ mirascope/llm/providers/openai/_utils/errors.py,sha256=28O7FW6qH203gShYOh5b1_7GimuESCzIdT32AF86nuQ,1624
196
+ mirascope/llm/providers/openai/completions/__init__.py,sha256=5X2lzkbta0JNh9KQR3Sb1C4VnQ0LcmMxOeH_pYtsB-o,766
197
+ mirascope/llm/providers/openai/completions/base_provider.py,sha256=w10W-lK1XAWktlOs0GM8tqeTOUuE4wXomcH3uTn1OX8,18014
198
+ mirascope/llm/providers/openai/completions/provider.py,sha256=jEH-9rMmNLEBDWVaOZj0rMuRtjwQxdK917tODk-C6pE,719
141
199
  mirascope/llm/providers/openai/completions/_utils/__init__.py,sha256=j6brTqACyRS71pkZIcL-LxneE5ALhaHkCtUnBUS0448,266
142
- mirascope/llm/providers/openai/completions/_utils/decode.py,sha256=8SSgLOFIXuCd_8G3QLIl50nM1hKYb8n13cnvgkAW54I,6646
143
- mirascope/llm/providers/openai/completions/_utils/encode.py,sha256=97J-8sWSsd3g45Zyiyb0b_lnKX3t9cgw9dRPLAJrf8o,13685
200
+ mirascope/llm/providers/openai/completions/_utils/decode.py,sha256=4yoS_wNK57RAxfjOL7kimSD5mYh_2IK5XDpAwspsoOg,8250
201
+ mirascope/llm/providers/openai/completions/_utils/encode.py,sha256=ZESiZJliHK-DA4DCH-oLtQij288QcR_LkdRs37Lsyrg,13680
144
202
  mirascope/llm/providers/openai/responses/__init__.py,sha256=Mo45QmWX111jc0Ws24LrJg3w2gVoFgVGDcby0_iSOLk,506
145
- mirascope/llm/providers/openai/responses/provider.py,sha256=5bSlMLb4glLwGJtVWlPRe3DLtcpy6vHX-SEl13VNyvs,16344
203
+ mirascope/llm/providers/openai/responses/provider.py,sha256=vjwJ7weexDmeYbiQCql2yNmLnLejGJoGODd-WDSNkBo,16630
146
204
  mirascope/llm/providers/openai/responses/_utils/__init__.py,sha256=U2VNfEJCaqorAJBZDV7p3rFEp1fyk7vSitYFv_5G5Cs,232
147
- mirascope/llm/providers/openai/responses/_utils/decode.py,sha256=yTVh8Bqhd1kdn9DK-YDf1Z3pszrAeIuPmPCTHvUgguI,7692
148
- mirascope/llm/providers/openai/responses/_utils/encode.py,sha256=WI1tlcehyEM5aYwD7-hLTc4DQ-mn_b5rpSitSu5-QNs,12814
149
- mirascope/llm/providers/openai/shared/__init__.py,sha256=x4koHwL1YsrZ-vzJ-RZks9xEVUUwGuMmthxRXlmQUqc,104
150
- mirascope/llm/providers/openai/shared/_utils.py,sha256=RbDDbzwgMcTzib1TjhWOcBGUxzQlLxCQiQ-ZozmLTFY,1781
151
- mirascope/llm/responses/__init__.py,sha256=bWEY1_AkJxBTtq3ML3cJM2arU1XOoDFCv2QvukFz73c,1308
205
+ mirascope/llm/providers/openai/responses/_utils/decode.py,sha256=Ua3ZVwqRiLxwDhycjnq6BLsPkIjNxmzTeZmMT2Z6MKc,9368
206
+ mirascope/llm/providers/openai/responses/_utils/encode.py,sha256=RLxP9rFXuXqoFnbwt6jG1AgqJyYbLdrcxa1RzTXsteI,12797
207
+ mirascope/llm/providers/together/__init__.py,sha256=mtWAGrQUPHNhmkGKCiLirst6PsCUCS5oK2bZsEf9s3Q,453
208
+ mirascope/llm/providers/together/provider.py,sha256=LauQR6kdxFNkO8CqaJIbiyn2TxI6mO3z5GhnZbHxQa0,1295
209
+ mirascope/llm/responses/__init__.py,sha256=sYr6Sm9G0pxbZoev-RVgz3o3FKHeAU3wa_G5NXjmdnw,1386
152
210
  mirascope/llm/responses/_utils.py,sha256=JkKXzG6-WqAbbmWLKOmbe7gDpp9xwg7xNHXryFbt6ME,1662
153
- mirascope/llm/responses/base_response.py,sha256=rzhkhhl4T4wDJnqPupvXd_b5hkvETFpgPe2dlel5wXY,4029
154
- mirascope/llm/responses/base_stream_response.py,sha256=qJ-5KRF5tvNeXSzOK3CElPP8m62q4vh27Fg0qSb1QB4,28110
155
- mirascope/llm/responses/finish_reason.py,sha256=1iSVaTZP8zlTwc9Pr4r10AzGkMz0iy0om8vKsHJ0OUY,742
156
- mirascope/llm/responses/response.py,sha256=mHAwk13Au6PXUY3ZbwYyp-YfvAM62qGJkLlnMMyyAKA,12253
157
- mirascope/llm/responses/root_response.py,sha256=8lldXCaMU2-Xq8s6k8e3w-AobzcDYRdQR8I-7l-Uv3o,6173
211
+ mirascope/llm/responses/base_response.py,sha256=5yjVtn3SH09hdp--B3ioT2gkmB3LpqgkBEAKuopOKBc,4170
212
+ mirascope/llm/responses/base_stream_response.py,sha256=xM0O94dE3h1ll_CYdwszf4gS-clMwX6k9jHEP1MEnqQ,29257
213
+ mirascope/llm/responses/finish_reason.py,sha256=Az5OY6pfZoOPEpzVnl07AqZPz5ZC-w4YKwpUPbFJGdM,798
214
+ mirascope/llm/responses/response.py,sha256=zbMWIOwYQq7Z0JgdfRpm4Qzy5Yb7Suty_vmf1kZuenE,12494
215
+ mirascope/llm/responses/root_response.py,sha256=lgfSwlhy5S-X4FDX70vt-uT6BOLfaTTaGIFbLkdWE94,6285
158
216
  mirascope/llm/responses/stream_response.py,sha256=ut85tOLGbGI3abheHKf55qEndLsRmddo1sEMQk7PtNo,24142
159
217
  mirascope/llm/responses/streams.py,sha256=TmEFvLVEWHfVYplik61yUWisxe8JGbaZdh7yC7e-axI,10789
218
+ mirascope/llm/responses/usage.py,sha256=mm4f9EDBzR57bqPTG2B0iqYnwbyog7csHqo0zjnwWVM,2984
160
219
  mirascope/llm/tools/__init__.py,sha256=P9NX6pP5fKScTAuR9K3fODdW17wQ-6fcArVx2klGies,961
161
220
  mirascope/llm/tools/_utils.py,sha256=mUi6vUEwYuwu8W9FCQcQ_9h_VE_U-Y3Y2UQ2YptPZL4,1171
162
221
  mirascope/llm/tools/decorator.py,sha256=1K-67dJkjCOS1rHAM91lOT8XfShTw54QA-TMEok5eH0,5326
@@ -171,7 +230,7 @@ mirascope/llm/types/type_vars.py,sha256=OsAcQAZh5T_X8ZTLlP4GC1x3qgVY9rfYSnME8aMT
171
230
  mirascope/ops/__init__.py,sha256=ryfU8Zn_PRELldrExsjz89eN_Qmk9FoDipaDsgf5CaY,5545
172
231
  mirascope/ops/exceptions.py,sha256=N5AES285tTxFJ1THIeJht-_ZEQ7-7_FWoes4EBAu3B8,641
173
232
  mirascope/ops/_internal/__init__.py,sha256=yCf8bnHiQFWYsBkwBPyMqknI5apmOwlmyf105mH9EAE,173
174
- mirascope/ops/_internal/closure.py,sha256=MM2RSGYTV8YH9SUt8itqDCnxpUUeL0Pq3BLDr08Zrbw,40392
233
+ mirascope/ops/_internal/closure.py,sha256=lPkZLfL33OZ3yxdZhT3RXqhD0ychKWH0zevU4V-VHCY,42465
175
234
  mirascope/ops/_internal/configuration.py,sha256=G_DnUfrAtuPb0-fQQpPts0yFCLdeYW-RqS2Td61pqjg,3616
176
235
  mirascope/ops/_internal/context.py,sha256=G0Jiv6XfWjeDyRrh5-Wg6I0UlqiDj17SNMhtQ6Rw3lM,2522
177
236
  mirascope/ops/_internal/propagation.py,sha256=2in7uttv2b5MBoe3Ol1mgn6N20TqhH0sErGak7hMUDY,7032
@@ -200,7 +259,7 @@ mirascope/ops/_internal/instrumentation/llm/gen_ai_types/gen_ai_input_messages.p
200
259
  mirascope/ops/_internal/instrumentation/llm/gen_ai_types/gen_ai_output_messages.py,sha256=qxLxSmwd_2EdymR4a5cDXc9DTSFGQXMhqSHGgS219Y4,957
201
260
  mirascope/ops/_internal/instrumentation/llm/gen_ai_types/gen_ai_system_instructions.py,sha256=ZkWNOh6-tG6LtFP_0Hjfdf_8BqAsIFyP3tNybeo1FnY,388
202
261
  mirascope/ops/_internal/instrumentation/llm/gen_ai_types/shared.py,sha256=JpmcF1i25EHc8KMv6nkpBwyIU46B_T8v1L71C16n080,3004
203
- mirascope-2.0.0a3.dist-info/METADATA,sha256=zmSqj2dnZv3sQRC130xwlFvNvYA-i28_ogisQbzT9Q0,8932
204
- mirascope-2.0.0a3.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
205
- mirascope-2.0.0a3.dist-info/licenses/LICENSE,sha256=LAs5Q8mdawTsVdONpDGukwsoc4KEUBmmonDEL39b23Y,1072
206
- mirascope-2.0.0a3.dist-info/RECORD,,
262
+ mirascope-2.0.0a5.dist-info/METADATA,sha256=gJnq3JtQUzxjBKEYf1pOdZ2MQW29xMhqmqBVIMgEQEs,8932
263
+ mirascope-2.0.0a5.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
264
+ mirascope-2.0.0a5.dist-info/licenses/LICENSE,sha256=LAs5Q8mdawTsVdONpDGukwsoc4KEUBmmonDEL39b23Y,1072
265
+ mirascope-2.0.0a5.dist-info/RECORD,,
@@ -1,48 +0,0 @@
1
- from functools import lru_cache
2
-
3
- from .anthropic import AnthropicProvider
4
- from .base import Provider
5
- from .google import GoogleProvider
6
- from .mlx import MLXProvider
7
- from .openai import OpenAIProvider
8
- from .openai.completions.provider import OpenAICompletionsProvider
9
- from .openai.responses.provider import OpenAIResponsesProvider
10
- from .provider_id import ProviderId
11
-
12
-
13
- @lru_cache(maxsize=256)
14
- def load_provider(
15
- provider_id: ProviderId, *, api_key: str | None = None, base_url: str | None = None
16
- ) -> Provider:
17
- """Create a cached provider instance for the specified provider id.
18
-
19
- Args:
20
- provider_id: The provider name ("openai", "anthropic", or "google").
21
- api_key: API key for authentication. If None, uses provider-specific env var.
22
- base_url: Base URL for the API. If None, uses provider-specific env var.
23
-
24
- Returns:
25
- A cached provider instance for the specified provider with the given parameters.
26
-
27
- Raises:
28
- ValueError: If the provider_id is not supported.
29
- """
30
- match provider_id:
31
- case "anthropic":
32
- return AnthropicProvider(api_key=api_key, base_url=base_url)
33
- case "google":
34
- return GoogleProvider(api_key=api_key, base_url=base_url)
35
- case "openai":
36
- return OpenAIProvider(api_key=api_key, base_url=base_url)
37
- case "openai:completions":
38
- return OpenAICompletionsProvider(api_key=api_key, base_url=base_url)
39
- case "openai:responses":
40
- return OpenAIResponsesProvider(api_key=api_key, base_url=base_url)
41
- case "mlx": # pragma: no cover (MLX is only available on macOS)
42
- return MLXProvider()
43
- case _: # pragma: no cover
44
- raise ValueError(f"Unknown provider: '{provider_id}'")
45
-
46
-
47
- load = load_provider
48
- """Convenient alias as `llm.providers.load`"""
@@ -1,7 +0,0 @@
1
- """Shared types and utils for all OpenAI clients."""
2
-
3
- from . import _utils
4
-
5
- __all__ = [
6
- "_utils",
7
- ]