mirascope 1.23.3__py3-none-any.whl → 1.24.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.
mirascope/__init__.py CHANGED
@@ -15,6 +15,7 @@ from .core import (
15
15
  BaseToolKit,
16
16
  CacheControlPart,
17
17
  DocumentPart,
18
+ DocumentURLPart,
18
19
  ImagePart,
19
20
  ImageURLPart,
20
21
  LocalProvider,
@@ -43,6 +44,7 @@ __all__ = [
43
44
  "BaseToolKit",
44
45
  "CacheControlPart",
45
46
  "DocumentPart",
47
+ "DocumentURLPart",
46
48
  "ImagePart",
47
49
  "ImageURLPart",
48
50
  "LocalProvider",
@@ -16,6 +16,7 @@ from .base import (
16
16
  CacheControlPart,
17
17
  CostMetadata,
18
18
  DocumentPart,
19
+ DocumentURLPart,
19
20
  FromCallArgs,
20
21
  ImagePart,
21
22
  ImageURLPart,
@@ -77,6 +78,7 @@ __all__ = [
77
78
  "CacheControlPart",
78
79
  "CostMetadata",
79
80
  "DocumentPart",
81
+ "DocumentURLPart",
80
82
  "FromCallArgs",
81
83
  "ImagePart",
82
84
  "ImageURLPart",
@@ -16,6 +16,7 @@ from .message_param import (
16
16
  BaseMessageParam,
17
17
  CacheControlPart,
18
18
  DocumentPart,
19
+ DocumentURLPart,
19
20
  ImagePart,
20
21
  ImageURLPart,
21
22
  TextPart,
@@ -59,6 +60,7 @@ __all__ = [
59
60
  "CommonCallParams",
60
61
  "CostMetadata",
61
62
  "DocumentPart",
63
+ "DocumentURLPart",
62
64
  "FromCallArgs",
63
65
  "GenerateJsonSchemaNoTitles",
64
66
  "ImagePart",
@@ -14,6 +14,7 @@ from ..message_param import (
14
14
  BaseMessageParam,
15
15
  CacheControlPart,
16
16
  DocumentPart,
17
+ DocumentURLPart,
17
18
  ImagePart,
18
19
  ImageURLPart,
19
20
  TextPart,
@@ -37,7 +38,8 @@ def _convert_message_sequence_part_to_content_part(
37
38
  | AudioURLPart
38
39
  | AudioSegment
39
40
  | Wave_read
40
- | DocumentPart,
41
+ | DocumentPart
42
+ | DocumentURLPart,
41
43
  ) -> (
42
44
  TextPart
43
45
  | ImagePart
@@ -45,6 +47,7 @@ def _convert_message_sequence_part_to_content_part(
45
47
  | AudioPart
46
48
  | AudioURLPart
47
49
  | CacheControlPart
50
+ | DocumentURLPart
48
51
  | DocumentPart
49
52
  ):
50
53
  if isinstance(message_sequence_part, str):
@@ -57,7 +60,8 @@ def _convert_message_sequence_part_to_content_part(
57
60
  | AudioPart
58
61
  | AudioURLPart
59
62
  | CacheControlPart
60
- | DocumentPart,
63
+ | DocumentPart
64
+ | DocumentURLPart,
61
65
  ):
62
66
  return message_sequence_part
63
67
  elif has_pil_module and isinstance(message_sequence_part, Image.Image):
@@ -107,6 +111,7 @@ def convert_message_content_to_message_param_content(
107
111
  | AudioSegment
108
112
  | Wave_read
109
113
  | DocumentPart
114
+ | DocumentURLPart,
110
115
  ],
111
116
  ) -> (
112
117
  list[
@@ -117,6 +122,7 @@ def convert_message_content_to_message_param_content(
117
122
  | AudioURLPart
118
123
  | CacheControlPart
119
124
  | DocumentPart
125
+ | DocumentURLPart,
120
126
  ]
121
127
  | str
122
128
  ):
@@ -151,6 +157,7 @@ def convert_messages_to_message_params(
151
157
  | AudioSegment
152
158
  | Wave_read
153
159
  | DocumentPart
160
+ | DocumentURLPart,
154
161
  ]
155
162
  | list[BaseMessageParam]
156
163
  | BaseMessageParam,
@@ -103,6 +103,18 @@ class DocumentPart(BaseModel):
103
103
  document: bytes
104
104
 
105
105
 
106
+ class DocumentURLPart(BaseModel):
107
+ """A content part for documents with a URL.
108
+
109
+ Attributes:
110
+ type: Always "document_url"
111
+ url: The URL to the document
112
+ """
113
+
114
+ type: Literal["document_url"]
115
+ url: str
116
+
117
+
106
118
  class ToolCallPart(BaseModel):
107
119
  """A content part for tool.
108
120
 
@@ -156,6 +168,7 @@ class BaseMessageParam(BaseModel):
156
168
  | AudioURLPart
157
169
  | CacheControlPart
158
170
  | DocumentPart
171
+ | DocumentURLPart
159
172
  | ToolCallPart
160
173
  | ToolResultPart
161
174
  ]
@@ -14,6 +14,7 @@ from .message_param import (
14
14
  BaseMessageParam,
15
15
  CacheControlPart,
16
16
  DocumentPart,
17
+ DocumentURLPart,
17
18
  ImagePart,
18
19
  ImageURLPart,
19
20
  TextPart,
@@ -36,6 +37,7 @@ class Messages:
36
37
  | AudioSegment
37
38
  | Wave_read
38
39
  | DocumentPart
40
+ | DocumentURLPart
39
41
  ]
40
42
  | list[BaseMessageParam | Any]
41
43
  | BaseMessageParam
@@ -57,6 +59,7 @@ class Messages:
57
59
  | AudioSegment
58
60
  | Wave_read
59
61
  | DocumentPart
62
+ | DocumentURLPart
60
63
  ],
61
64
  ) -> BaseMessageParam:
62
65
  return BaseMessageParam(
@@ -80,6 +83,7 @@ class Messages:
80
83
  | AudioSegment
81
84
  | Wave_read
82
85
  | DocumentPart
86
+ | DocumentURLPart
83
87
  ],
84
88
  ) -> BaseMessageParam:
85
89
  return BaseMessageParam(
@@ -103,6 +107,7 @@ class Messages:
103
107
  | AudioSegment
104
108
  | Wave_read
105
109
  | DocumentPart
110
+ | DocumentURLPart
106
111
  ],
107
112
  ) -> BaseMessageParam:
108
113
  return BaseMessageParam(
@@ -16,9 +16,13 @@ from google.genai.types import (
16
16
  )
17
17
 
18
18
  from ...base import BaseMessageParam
19
- from ...base._utils import get_audio_type, get_image_type
19
+ from ...base._utils import get_audio_type, get_document_type, get_image_type
20
20
  from ...base._utils._parse_content_template import _load_media
21
- from ._validate_media_type import _check_audio_media_type, _check_image_media_type
21
+ from ._validate_media_type import (
22
+ _check_audio_media_type,
23
+ _check_document_media_type,
24
+ _check_image_media_type,
25
+ )
22
26
 
23
27
 
24
28
  def _over_file_size_limit(size: int) -> bool:
@@ -154,9 +158,78 @@ async def _convert_message_params_async(
154
158
  if _over_file_size_limit(total_payload_size):
155
159
  must_upload[index] = blob_dict
156
160
  total_payload_size -= audio_size
161
+ elif part.type == "document":
162
+ _check_document_media_type(part.media_type)
163
+ blob_dict = BlobDict(data=part.document, mime_type=part.media_type)
164
+ converted_content.append(PartDict(inline_data=blob_dict))
165
+ document_size = len(part.document)
166
+ total_payload_size += document_size
167
+ if _over_file_size_limit(total_payload_size):
168
+ must_upload[index] = blob_dict
169
+ total_payload_size -= document_size
170
+ elif part.type == "document_url":
171
+ if (
172
+ client.vertexai
173
+ or not part.url.startswith(("https://", "http://"))
174
+ or "generativelanguage.googleapis.com" in part.url
175
+ ):
176
+ converted_content.append(
177
+ PartDict(
178
+ file_data=FileDataDict(
179
+ file_uri=part.url, mime_type=None
180
+ )
181
+ )
182
+ )
183
+ else:
184
+ media_type = None
185
+ try:
186
+ downloaded_document = _load_media(part.url)
187
+ document_types = {
188
+ "pdf": "application/pdf",
189
+ "html": "text/html",
190
+ "xml": "text/xml",
191
+ "rtf": "text/rtf",
192
+ }
193
+
194
+ try:
195
+ document_type_ext = get_document_type(
196
+ downloaded_document
197
+ )
198
+ media_type = document_types.get(document_type_ext)
199
+ except ValueError:
200
+ try:
201
+ downloaded_document.decode("utf-8")
202
+ media_type = "text/plain"
203
+ except UnicodeDecodeError:
204
+ pass
205
+
206
+ if media_type is None:
207
+ raise ValueError(
208
+ f"Unsupported document format detected for URL: {part.url}. "
209
+ "Google API only supports the following document formats: "
210
+ "PDF, JavaScript, Python, TXT, HTML, CSS, Markdown, CSV, XML and RTF. "
211
+ "Please provide a document in one of these supported formats."
212
+ )
213
+
214
+ _check_document_media_type(media_type)
215
+ blob_dict = BlobDict(
216
+ data=downloaded_document, mime_type=media_type
217
+ )
218
+ converted_content.append(PartDict(inline_data=blob_dict))
219
+ document_size = len(downloaded_document)
220
+ total_payload_size += document_size
221
+ if _over_file_size_limit(total_payload_size):
222
+ must_upload[index] = blob_dict
223
+ total_payload_size -= document_size
224
+ except ValueError as e:
225
+ raise ValueError(
226
+ f"Failed to process document from URL: {part.url}. "
227
+ f"Error details: {str(e)}. "
228
+ "Please ensure the URL is accessible and points to a supported document format."
229
+ )
157
230
  else:
158
231
  raise ValueError(
159
- "Google currently only supports text, tool_call, tool_result, image, and audio parts. "
232
+ "Google currently only supports text, tool_call, tool_result, image, audio, and document parts. "
160
233
  f"Part provided: {part.type}"
161
234
  )
162
235
 
@@ -8,7 +8,7 @@ from google.genai.types import (
8
8
  )
9
9
 
10
10
  from mirascope.core import BaseMessageParam
11
- from mirascope.core.base import DocumentPart, ImagePart, TextPart
11
+ from mirascope.core.base import DocumentPart, DocumentURLPart, ImagePart, TextPart
12
12
  from mirascope.core.base._utils._base_message_param_converter import (
13
13
  BaseMessageParamConverter,
14
14
  )
@@ -21,7 +21,11 @@ from mirascope.core.base.message_param import (
21
21
  )
22
22
  from mirascope.core.google._utils import convert_message_params
23
23
 
24
- from ._validate_media_type import _check_audio_media_type, _check_image_media_type
24
+ from ._validate_media_type import (
25
+ _check_audio_media_type,
26
+ _check_document_media_type,
27
+ _check_image_media_type,
28
+ )
25
29
 
26
30
 
27
31
  class GoogleMessageParamConverter(BaseMessageParamConverter):
@@ -78,7 +82,21 @@ class GoogleMessageParamConverter(BaseMessageParamConverter):
78
82
  audio=data,
79
83
  )
80
84
  )
81
- elif mime_type == "application/pdf":
85
+ elif mime_type in [
86
+ "application/pdf",
87
+ "application/x-javascript",
88
+ "text/javascript",
89
+ "application/x-python",
90
+ "text/x-python",
91
+ "text/plain",
92
+ "text/html",
93
+ "text/css",
94
+ "text/csv",
95
+ "text/xml",
96
+ "text/rtf",
97
+ "text/md",
98
+ ]:
99
+ _check_document_media_type(mime_type)
82
100
  content_list.append(
83
101
  DocumentPart(
84
102
  type="document", media_type=mime_type, document=data
@@ -106,6 +124,26 @@ class GoogleMessageParamConverter(BaseMessageParamConverter):
106
124
  url=cast(str, part.file_data.file_uri),
107
125
  )
108
126
  )
127
+ elif mime_type in [
128
+ "application/pdf",
129
+ "application/x-javascript",
130
+ "text/javascript",
131
+ "application/x-python",
132
+ "text/x-python",
133
+ "text/plain",
134
+ "text/html",
135
+ "text/css",
136
+ "text/csv",
137
+ "text/xml",
138
+ "text/rtf",
139
+ "text/md",
140
+ ]:
141
+ content_list.append(
142
+ DocumentURLPart(
143
+ type="document_url",
144
+ url=cast(str, part.file_data.file_uri),
145
+ )
146
+ )
109
147
  else:
110
148
  # Since `FileDataDict` handles any file data, we use
111
149
  # `ImageURLPart` for unknown mime types
@@ -148,7 +186,7 @@ class GoogleMessageParamConverter(BaseMessageParamConverter):
148
186
  )
149
187
  else:
150
188
  raise ValueError(
151
- "Part does not contain any supported content (text, image, or document)."
189
+ "Part does not contain any supported content (text, image, audio, or document)."
152
190
  )
153
191
 
154
192
  if len(content_list) == 1 and isinstance(content_list[0], TextPart):
@@ -32,3 +32,27 @@ def _check_audio_media_type(media_type: str) -> None:
32
32
  "Google currently only supports WAV, MP3, AIFF, AAC, OGG, "
33
33
  "and FLAC audio file types."
34
34
  )
35
+
36
+
37
+ def _check_document_media_type(media_type: str) -> None:
38
+ """Raises a `ValueError` if the document media type is not supported."""
39
+
40
+ if media_type not in [
41
+ "application/pdf",
42
+ "application/x-javascript",
43
+ "text/javascript",
44
+ "application/x-python",
45
+ "text/x-python",
46
+ "text/plain",
47
+ "text/html",
48
+ "text/css",
49
+ "text/csv",
50
+ "text/xml",
51
+ "text/rtf",
52
+ "text/md",
53
+ ]:
54
+ raise ValueError(
55
+ f"Unsupported document media type: {media_type}. "
56
+ "Google currently only supports PDF, JavaScript, Python, TXT, HTML, CSS, "
57
+ "CSV, XML, RTF, and Markdown document types."
58
+ )
mirascope/llm/__init__.py CHANGED
@@ -3,11 +3,13 @@ from ._call import call
3
3
  from ._context import context
4
4
  from ._override import override
5
5
  from .call_response import CallResponse
6
+ from .call_response_chunk import CallResponseChunk
6
7
  from .stream import Stream
7
8
  from .tool import Tool
8
9
 
9
10
  __all__ = [
10
11
  "CallResponse",
12
+ "CallResponseChunk",
11
13
  "CostMetadata",
12
14
  "LocalProvider",
13
15
  "Provider",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mirascope
3
- Version: 1.23.3
3
+ Version: 1.24.0
4
4
  Summary: LLM abstractions that aren't obstructions
5
5
  Project-URL: Homepage, https://mirascope.com
6
6
  Project-URL: Documentation, https://mirascope.com/WELCOME
@@ -101,19 +101,19 @@ Provides-Extra: xai
101
101
  Requires-Dist: openai<2,>=1.6.0; extra == 'xai'
102
102
  Description-Content-Type: text/markdown
103
103
 
104
- <div align="center" justiry="start">
105
- <a href="https://mirascope.com">
106
- <img align="bottom" src="https://github.com/Mirascope/mirascope/assets/99370834/e403d7ee-f8bc-4df1-b2d0-33763f021c89" alt="Frog Logo" width="84"/><br><img align="bottom" src="https://uploads-ssl.webflow.com/65a6fd6a1c3b2704d6217d3d/65b5674e9ceef563dc57eb11_Medium%20length%20hero%20headline%20goes%20here.svg" width="400" alt="Mirascope"/>
104
+ <p align="center">
105
+ <a href="https://mirascope.com/#mirascope">
106
+ <img src="https://github.com/user-attachments/assets/58b04850-8f30-40a6-be68-96ed2aa9b6d8" />
107
107
  </a>
108
- </div>
108
+ </p>
109
109
 
110
110
  <p align="center">
111
111
  <a href="https://github.com/Mirascope/mirascope/actions/workflows/tests.yml" target="_blank"><img src="https://github.com/Mirascope/mirascope/actions/workflows/tests.yml/badge.svg?branch=main" alt="Tests"/></a>
112
112
  <a href="https://codecov.io/github/Mirascope/mirascope" target="_blank"><img src="https://codecov.io/github/Mirascope/mirascope/graph/badge.svg?token=HAEAWT3KC9" alt="Coverage"/></a>
113
- <a href="https://mirascope.com/WELCOME" target="_blank"><img src="https://img.shields.io/badge/docs-available-brightgreen" alt="Docs"/></a>
113
+ <a href="https://mirascope.com/docs/mirascope" target="_blank"><img src="https://img.shields.io/badge/docs-available-brightgreen" alt="Docs"/></a>
114
114
  <a href="https://pypi.python.org/pypi/mirascope" target="_blank"><img src="https://img.shields.io/pypi/v/mirascope.svg" alt="PyPI Version"/></a>
115
115
  <a href="https://pypi.python.org/pypi/mirascope" target="_blank"><img src="https://img.shields.io/pypi/pyversions/mirascope.svg" alt="Stars"/></a>
116
- <a href="https://github.com/Mirascope/mirascope/blog/dev/LICENSE"><img src="https://img.shields.io/github/license/Mirascope/mirascope.svg" alt="License"/></a>
116
+ <a href="https://github.com/Mirascope/mirascope/tree/main/LICENSE"><img src="https://img.shields.io/github/license/Mirascope/mirascope.svg" alt="License"/></a>
117
117
  <a href="https://github.com/Mirascope/mirascope/stargazers" target="_blank"><img src="https://img.shields.io/github/stars/Mirascope/mirascope.svg" alt="Stars"/></a>
118
118
  </p>
119
119
 
@@ -154,7 +154,7 @@ print(book)
154
154
 
155
155
  ## Tutorials
156
156
 
157
- Check out our [quickstart tutorial](https://mirascope.com/tutorials/getting_started/quickstart) and many other tutorials for an interactive way to getting started with Mirascope.
157
+ Check out our [quickstart tutorial](https://mirascope.com/docs/mirascope/getting-started/quickstart) and many other tutorials for an interactive way to getting started with Mirascope.
158
158
 
159
159
  ## Usage
160
160
 
@@ -166,4 +166,4 @@ Mirascope uses [Semantic Versioning](https://semver.org/).
166
166
 
167
167
  ## Licence
168
168
 
169
- This project is licensed under the terms of the [MIT License](https://github.com/Mirascope/mirascope/blob/dev/LICENSE).
169
+ This project is licensed under the terms of the [MIT License](https://github.com/Mirascope/mirascope/tree/main/LICENSE).
@@ -1,4 +1,4 @@
1
- mirascope/__init__.py,sha256=9tlaOwtuiqux3XRp13S50-miVOXdNUFQPpgJ52DAigk,1083
1
+ mirascope/__init__.py,sha256=Rmt0CqSEEEqc7KhW10KzQHgGij11PIKRrNQ_y4IU4eY,1127
2
2
  mirascope/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  mirascope/beta/__init__.py,sha256=YsIIE5w3nKj0Ywcs_Y5tSE6WlHKR-nQwwbhNF1R8UW8,43
4
4
  mirascope/beta/openai/__init__.py,sha256=a7xllQBfcpO6kYwZ5Zv1CWzN9qpS1SJoBgb1J20F-Hk,257
@@ -41,7 +41,7 @@ mirascope/beta/rag/pinecone/vectorstores.py,sha256=ZcLwVmrxNMq5a2mLI-3F9XJ_UYDry
41
41
  mirascope/beta/rag/weaviate/__init__.py,sha256=eod9OprMo1zdDb-waYWtBJKWuYQRx7v-QEen-wzm_5w,231
42
42
  mirascope/beta/rag/weaviate/types.py,sha256=-2r2Vy71kpLlRJgVqWoE3atub5a2eymHPSjTHuSqCfQ,2984
43
43
  mirascope/beta/rag/weaviate/vectorstores.py,sha256=8Nwy-QRHwSUdvMkqEhqmUkN7y_CzQN7bop7do1K8v4w,3606
44
- mirascope/core/__init__.py,sha256=SqxvVLwoIfxE8LJZfoXLFgMYujDUcYiAkZ_riTD6CO8,2030
44
+ mirascope/core/__init__.py,sha256=10mn-PHVEOUu0aZ-CIOZDl89exoRcJVDBB1xWK938YA,2074
45
45
  mirascope/core/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
46
  mirascope/core/anthropic/__init__.py,sha256=GB-CULa3jYEPv1ZDyZjNCKQJbrc6ojqu8WNRSFElQ-4,918
47
47
  mirascope/core/anthropic/_call.py,sha256=LXUR__AyexD-hsPMPKpA7IFuh8Cfc0uAg1GrJSxiWnU,2358
@@ -80,7 +80,7 @@ mirascope/core/azure/_utils/_get_json_output.py,sha256=Qec7WJY5is1Q63Vp9uUNNfkRw
80
80
  mirascope/core/azure/_utils/_handle_stream.py,sha256=M_BGnjBGWTPefNyIMuJSHiDxIvqmENmqfVlDx_qzL1c,4638
81
81
  mirascope/core/azure/_utils/_message_param_converter.py,sha256=JAUeHObtd_V225YyZqEruuih3HRozq43pqjYJCbJj8A,4443
82
82
  mirascope/core/azure/_utils/_setup_call.py,sha256=cdUof-RCxsPbKuJvevsEUYXU-ckoql3wTevNEQiEpz4,6496
83
- mirascope/core/base/__init__.py,sha256=mENqcLNM5-FCh4lyDGihOAegQSAzSoIK744pBMkJinM,2067
83
+ mirascope/core/base/__init__.py,sha256=tBy5Q2jrioxxYji_tArS-fcxBYmIBbhmGGZDpkhDjE8,2111
84
84
  mirascope/core/base/_call_factory.py,sha256=YdFHAa9WtGfYeqVcM2xaDNh5gMg584rOe26_E51-1to,9663
85
85
  mirascope/core/base/_create.py,sha256=M6dpcWwtyb6O7pa9pT0rdwhYEUcuB2iu2uv97kAU1qk,10090
86
86
  mirascope/core/base/_extract.py,sha256=QTqkArgmgR17OB5jTP86Wo-TW-BcouOcK9gdMy-EcNw,6799
@@ -93,8 +93,8 @@ mirascope/core/base/call_response_chunk.py,sha256=ZfulgERwgva55TLrQI9XimX8bpgOqB
93
93
  mirascope/core/base/dynamic_config.py,sha256=V5IG2X5gPFpfQ47uO8JU1zoC2eNdRftsRZEmwhRPaYI,2859
94
94
  mirascope/core/base/from_call_args.py,sha256=8ijMX7PN6a4o6uLdmXJlSRnE-rEVJU5NLxUmNrS8dvU,909
95
95
  mirascope/core/base/merge_decorators.py,sha256=9pQYXuTxLh4mGKVIsnR5pYBkYCaQjg85TTelC6XDldE,1988
96
- mirascope/core/base/message_param.py,sha256=DjyZTFbWpuBsrSJO2G2joT3klBLN6hoJNd5nA3GWjmU,3562
97
- mirascope/core/base/messages.py,sha256=jD8SGjP3VQJsRfDo71ifHfwTMH4bHtYyjXQKyWRy_OY,2530
96
+ mirascope/core/base/message_param.py,sha256=5AtuTmpscZKsXengBPkPV4F33Et0BQRpfeRwMMvqqdY,3822
97
+ mirascope/core/base/messages.py,sha256=tn38kanabpq6fabxvb0p8zo5fZBBz6Yotl1szCgh3xg,2671
98
98
  mirascope/core/base/metadata.py,sha256=V9hgMkj6m3QGsu4H5LhCxBZBYQLoygJv0CeLIf1DF0M,382
99
99
  mirascope/core/base/prompt.py,sha256=M5PK9JoEsWTQ-kzNCpZKdDGzWAkb8MS267xEFCPfpAU,15414
100
100
  mirascope/core/base/response_model_config_dict.py,sha256=OUdx_YkV2vBzUSSB2OYLAAHf22T7jvF5tRuc6c-vhNQ,254
@@ -110,7 +110,7 @@ mirascope/core/base/_utils/_base_type.py,sha256=x8ZabSxZZNAy6ER-VQEkB6mNyjWcGSCB
110
110
  mirascope/core/base/_utils/_convert_base_model_to_base_tool.py,sha256=JoHf1CbRwK91dABm5xLhdIPmeMSFS_nj-qW9OQu_YJ0,1750
111
111
  mirascope/core/base/_utils/_convert_base_type_to_base_tool.py,sha256=fAOfqqoT0_vk1i-h-lCdWQYYeTjZ3fTiCgwGmgtHk9o,734
112
112
  mirascope/core/base/_utils/_convert_function_to_base_tool.py,sha256=squjro0oxwXOiavcf4bSHjHS94uSeCBGpykacoFpKx8,5729
113
- mirascope/core/base/_utils/_convert_messages_to_message_params.py,sha256=symOUsXkecoBKV8kB6bkubFW6pi34grUlTkJfnfpaYo,4360
113
+ mirascope/core/base/_utils/_convert_messages_to_message_params.py,sha256=9gys7ZPBAiuQH5hdi4_bL0KH32Q96fESyKDW5S0-9Js,4532
114
114
  mirascope/core/base/_utils/_convert_provider_finish_reason_to_finish_reason.py,sha256=Mki5mYbYX8vUW-oosC4PaRNUHW_T5xAQWti3_1ndtTk,611
115
115
  mirascope/core/base/_utils/_default_tool_docstring.py,sha256=JLyryjGDaHMU-P7gUpnjkPyELCQsQgi8AP4Dp_yXPOM,277
116
116
  mirascope/core/base/_utils/_extract_tool_return.py,sha256=ZDBZJ4cacFd8nijSWZEhib7B58ZnSFD_rK1FiGNTYU0,1553
@@ -221,12 +221,12 @@ mirascope/core/google/tool.py,sha256=61a9Ejdxz41pwaab9VE2yvP_J1Aebua3BeRPJ_GJSnE
221
221
  mirascope/core/google/_utils/__init__.py,sha256=vL0hx6WKW5lqpUcFTFCFGvmwtR-pts0JzWgCXhaUVrI,388
222
222
  mirascope/core/google/_utils/_convert_common_call_params.py,sha256=TF7GWBHcpfzb7XmrxKp3gnaONITYF93lqr4XkSVz_uU,1195
223
223
  mirascope/core/google/_utils/_convert_finish_reason_to_common_finish_reasons.py,sha256=ig4tb7Zanz-tyZpvc9Ncd47a2FNTOS7-wl1PYBq-4cY,879
224
- mirascope/core/google/_utils/_convert_message_params.py,sha256=9I7Q79Z8tBCLZtfjWJNQkuKgz0n2L43SzHB3cV3hNmY,8926
224
+ mirascope/core/google/_utils/_convert_message_params.py,sha256=OZXdwhAP-33yIr1QfEBDirjh1QOUeLzL2IajfVXgcUM,12787
225
225
  mirascope/core/google/_utils/_get_json_output.py,sha256=sxDgT0Ra6YJynL5_hhakf0dNJEhZm0DfAgfcvC_DAFU,1596
226
226
  mirascope/core/google/_utils/_handle_stream.py,sha256=xTaQvAWnJ195YI_h68USvit4-G8T_fogmtBZFhu1qoE,2238
227
- mirascope/core/google/_utils/_message_param_converter.py,sha256=qOj8bAdQusFhLg-mzQ1TJwbMQHvjY7DYrTGOIylu5hs,6661
227
+ mirascope/core/google/_utils/_message_param_converter.py,sha256=8N3etkSjoyU0wxcGVw13A5EtI7iphBD4pHG87iUCkZg,8094
228
228
  mirascope/core/google/_utils/_setup_call.py,sha256=UoV4McGgSS79PKErjArCmrq1HmpFvq2qegJYoyY4P5U,6469
229
- mirascope/core/google/_utils/_validate_media_type.py,sha256=sUOjKpC498L-NCiECejAAfSzMUAvZT84rf-2Yo-JE58,1042
229
+ mirascope/core/google/_utils/_validate_media_type.py,sha256=qLSoUlv5l5AZJ_PAsGFZmHNNdJHiB3jbFuAR2Ckga6s,1746
230
230
  mirascope/core/groq/__init__.py,sha256=8jWCQScdei_TImGMWUwiKnlOwffQqaXdAL-bluFmEL0,798
231
231
  mirascope/core/groq/_call.py,sha256=gR8VN5IaYWIFXc0csn995q59FM0nBs-xVFjkVycPjMM,2223
232
232
  mirascope/core/groq/_call_kwargs.py,sha256=trT8AdQ-jdQPYKlGngIMRwwQuvKuvAbvI1yyozftOuI,425
@@ -333,7 +333,7 @@ mirascope/integrations/otel/__init__.py,sha256=OzboYfm3fUNwKTuu08KX83hQHYI4oZYN2
333
333
  mirascope/integrations/otel/_utils.py,sha256=SCVb3MpcpqLpCpumJEbEdINceNdusnyT6iuKPz66sBc,8778
334
334
  mirascope/integrations/otel/_with_hyperdx.py,sha256=f17uxXQk5zZPtyj6zwPwJz5i7atsnUPOoq1LqT8JO0E,1637
335
335
  mirascope/integrations/otel/_with_otel.py,sha256=tbjd6BEbcSfnsm5CWHBoHwbRNrHt6-t4or-SYGQSD-w,1659
336
- mirascope/llm/__init__.py,sha256=rCukXJUqSGiDGNMMM9g3NS8clnrCxgCpaFIXIG1M660,432
336
+ mirascope/llm/__init__.py,sha256=LI3YkfIZLJ_Pzkm2x4W0HbKO-EHDDojc5oYp7qO6YNs,508
337
337
  mirascope/llm/_call.py,sha256=_YOmo5Y4NU2Jz1XcgEEI94UCyzgiAFrKwIH7o2KQ5vM,13933
338
338
  mirascope/llm/_context.py,sha256=vtHJkLlFfUwyR_hYEHXAw3xunpHhLn67k4kuFw50GR8,12481
339
339
  mirascope/llm/_override.py,sha256=m4MdOhM-aJRIGP7NBJhscq3ISNct6FBPn3jjmryFo_Q,112292
@@ -371,7 +371,7 @@ mirascope/v0/base/ops_utils.py,sha256=1Qq-VIwgHBaYutiZsS2MUQ4OgPC3APyywI5bTiTAmA
371
371
  mirascope/v0/base/prompts.py,sha256=FM2Yz98cSnDceYogiwPrp4BALf3_F3d4fIOCGAkd-SE,1298
372
372
  mirascope/v0/base/types.py,sha256=ZfatJoX0Yl0e3jhv0D_MhiSVHLYUeJsdN3um3iE10zY,352
373
373
  mirascope/v0/base/utils.py,sha256=XREPENRQTu8gpMhHU8RC8qH_am3FfGUvY-dJ6x8i-mw,681
374
- mirascope-1.23.3.dist-info/METADATA,sha256=22W90rT7-eiVW-Iz5P-qoVDvwoQii6qiW2HBxIY8zTE,8783
375
- mirascope-1.23.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
376
- mirascope-1.23.3.dist-info/licenses/LICENSE,sha256=LAs5Q8mdawTsVdONpDGukwsoc4KEUBmmonDEL39b23Y,1072
377
- mirascope-1.23.3.dist-info/RECORD,,
374
+ mirascope-1.24.0.dist-info/METADATA,sha256=wShWCcdl1mgsX_rev-w_nWQghO27G71zLJ4Y8goHGeo,8542
375
+ mirascope-1.24.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
376
+ mirascope-1.24.0.dist-info/licenses/LICENSE,sha256=LAs5Q8mdawTsVdONpDGukwsoc4KEUBmmonDEL39b23Y,1072
377
+ mirascope-1.24.0.dist-info/RECORD,,