mirascope 2.0.0a4__py3-none-any.whl → 2.0.0a6__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 (215) hide show
  1. mirascope/__init__.py +10 -1
  2. mirascope/_stubs.py +363 -0
  3. mirascope/api/__init__.py +8 -0
  4. mirascope/api/_generated/__init__.py +119 -1
  5. mirascope/api/_generated/annotations/__init__.py +33 -0
  6. mirascope/api/_generated/annotations/client.py +474 -0
  7. mirascope/api/_generated/annotations/raw_client.py +1095 -0
  8. mirascope/api/_generated/annotations/types/__init__.py +31 -0
  9. mirascope/api/_generated/annotations/types/annotations_create_request_label.py +5 -0
  10. mirascope/api/_generated/annotations/types/annotations_create_response.py +35 -0
  11. mirascope/api/_generated/annotations/types/annotations_create_response_label.py +5 -0
  12. mirascope/api/_generated/annotations/types/annotations_get_response.py +35 -0
  13. mirascope/api/_generated/annotations/types/annotations_get_response_label.py +5 -0
  14. mirascope/api/_generated/annotations/types/annotations_list_request_label.py +5 -0
  15. mirascope/api/_generated/annotations/types/annotations_list_response.py +21 -0
  16. mirascope/api/_generated/annotations/types/annotations_list_response_annotations_item.py +35 -0
  17. mirascope/api/_generated/annotations/types/annotations_list_response_annotations_item_label.py +5 -0
  18. mirascope/api/_generated/annotations/types/annotations_update_request_label.py +5 -0
  19. mirascope/api/_generated/annotations/types/annotations_update_response.py +35 -0
  20. mirascope/api/_generated/annotations/types/annotations_update_response_label.py +5 -0
  21. mirascope/api/_generated/api_keys/__init__.py +7 -0
  22. mirascope/api/_generated/api_keys/client.py +429 -0
  23. mirascope/api/_generated/api_keys/raw_client.py +788 -0
  24. mirascope/api/_generated/api_keys/types/__init__.py +9 -0
  25. mirascope/api/_generated/api_keys/types/api_keys_create_response.py +28 -0
  26. mirascope/api/_generated/api_keys/types/api_keys_get_response.py +27 -0
  27. mirascope/api/_generated/api_keys/types/api_keys_list_response_item.py +27 -0
  28. mirascope/api/_generated/client.py +12 -0
  29. mirascope/api/_generated/core/client_wrapper.py +2 -14
  30. mirascope/api/_generated/core/datetime_utils.py +1 -3
  31. mirascope/api/_generated/core/file.py +2 -5
  32. mirascope/api/_generated/core/http_client.py +36 -112
  33. mirascope/api/_generated/core/jsonable_encoder.py +1 -3
  34. mirascope/api/_generated/core/pydantic_utilities.py +19 -74
  35. mirascope/api/_generated/core/query_encoder.py +1 -3
  36. mirascope/api/_generated/core/serialization.py +4 -10
  37. mirascope/api/_generated/docs/client.py +2 -6
  38. mirascope/api/_generated/docs/raw_client.py +4 -20
  39. mirascope/api/_generated/environments/__init__.py +17 -0
  40. mirascope/api/_generated/environments/client.py +500 -0
  41. mirascope/api/_generated/environments/raw_client.py +999 -0
  42. mirascope/api/_generated/environments/types/__init__.py +15 -0
  43. mirascope/api/_generated/environments/types/environments_create_response.py +24 -0
  44. mirascope/api/_generated/environments/types/environments_get_response.py +24 -0
  45. mirascope/api/_generated/environments/types/environments_list_response_item.py +24 -0
  46. mirascope/api/_generated/environments/types/environments_update_response.py +24 -0
  47. mirascope/api/_generated/errors/__init__.py +2 -0
  48. mirascope/api/_generated/errors/bad_request_error.py +1 -5
  49. mirascope/api/_generated/errors/conflict_error.py +1 -5
  50. mirascope/api/_generated/errors/forbidden_error.py +1 -5
  51. mirascope/api/_generated/errors/internal_server_error.py +1 -6
  52. mirascope/api/_generated/errors/not_found_error.py +1 -5
  53. mirascope/api/_generated/errors/unauthorized_error.py +11 -0
  54. mirascope/api/_generated/functions/__init__.py +29 -0
  55. mirascope/api/_generated/functions/client.py +433 -0
  56. mirascope/api/_generated/functions/raw_client.py +1049 -0
  57. mirascope/api/_generated/functions/types/__init__.py +29 -0
  58. mirascope/api/_generated/functions/types/functions_create_request_dependencies_value.py +20 -0
  59. mirascope/api/_generated/functions/types/functions_create_response.py +37 -0
  60. mirascope/api/_generated/functions/types/functions_create_response_dependencies_value.py +20 -0
  61. mirascope/api/_generated/functions/types/functions_find_by_hash_response.py +39 -0
  62. mirascope/api/_generated/functions/types/functions_find_by_hash_response_dependencies_value.py +20 -0
  63. mirascope/api/_generated/functions/types/functions_get_response.py +37 -0
  64. mirascope/api/_generated/functions/types/functions_get_response_dependencies_value.py +20 -0
  65. mirascope/api/_generated/functions/types/functions_list_response.py +21 -0
  66. mirascope/api/_generated/functions/types/functions_list_response_functions_item.py +41 -0
  67. mirascope/api/_generated/functions/types/functions_list_response_functions_item_dependencies_value.py +20 -0
  68. mirascope/api/_generated/health/client.py +2 -6
  69. mirascope/api/_generated/health/raw_client.py +5 -23
  70. mirascope/api/_generated/health/types/health_check_response.py +1 -3
  71. mirascope/api/_generated/organizations/__init__.py +2 -0
  72. mirascope/api/_generated/organizations/client.py +94 -27
  73. mirascope/api/_generated/organizations/raw_client.py +246 -128
  74. mirascope/api/_generated/organizations/types/__init__.py +2 -0
  75. mirascope/api/_generated/organizations/types/organizations_create_response.py +5 -3
  76. mirascope/api/_generated/organizations/types/organizations_create_response_role.py +1 -3
  77. mirascope/api/_generated/organizations/types/organizations_credits_response.py +19 -0
  78. mirascope/api/_generated/organizations/types/organizations_get_response.py +5 -3
  79. mirascope/api/_generated/organizations/types/organizations_get_response_role.py +1 -3
  80. mirascope/api/_generated/organizations/types/organizations_list_response_item.py +5 -3
  81. mirascope/api/_generated/organizations/types/organizations_list_response_item_role.py +1 -3
  82. mirascope/api/_generated/organizations/types/organizations_update_response.py +5 -3
  83. mirascope/api/_generated/organizations/types/organizations_update_response_role.py +1 -3
  84. mirascope/api/_generated/projects/__init__.py +2 -12
  85. mirascope/api/_generated/projects/client.py +38 -68
  86. mirascope/api/_generated/projects/raw_client.py +92 -163
  87. mirascope/api/_generated/projects/types/__init__.py +1 -6
  88. mirascope/api/_generated/projects/types/projects_create_response.py +4 -9
  89. mirascope/api/_generated/projects/types/projects_get_response.py +4 -9
  90. mirascope/api/_generated/projects/types/projects_list_response_item.py +4 -9
  91. mirascope/api/_generated/projects/types/projects_update_response.py +4 -9
  92. mirascope/api/_generated/reference.md +1862 -70
  93. mirascope/api/_generated/traces/__init__.py +22 -0
  94. mirascope/api/_generated/traces/client.py +398 -0
  95. mirascope/api/_generated/traces/raw_client.py +902 -18
  96. mirascope/api/_generated/traces/types/__init__.py +32 -0
  97. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item.py +4 -11
  98. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource.py +2 -6
  99. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item.py +1 -3
  100. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value.py +8 -24
  101. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_array_value.py +2 -6
  102. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_kvlist_value.py +3 -9
  103. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_kvlist_value_values_item.py +2 -6
  104. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item.py +3 -9
  105. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope.py +4 -8
  106. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item.py +2 -6
  107. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value.py +8 -24
  108. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_array_value.py +2 -6
  109. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_kvlist_value.py +3 -9
  110. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_kvlist_value_values_item.py +1 -3
  111. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item.py +6 -18
  112. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item.py +3 -9
  113. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value.py +8 -24
  114. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_array_value.py +2 -6
  115. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_kvlist_value.py +2 -6
  116. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_kvlist_value_values_item.py +1 -3
  117. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_status.py +2 -6
  118. mirascope/api/_generated/traces/types/traces_create_response.py +2 -5
  119. mirascope/api/_generated/traces/types/traces_create_response_partial_success.py +3 -9
  120. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response.py +54 -0
  121. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response_top_functions_item.py +24 -0
  122. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response_top_models_item.py +22 -0
  123. mirascope/api/_generated/traces/types/traces_get_trace_detail_response.py +33 -0
  124. mirascope/api/_generated/traces/types/traces_get_trace_detail_response_spans_item.py +90 -0
  125. mirascope/api/_generated/traces/types/traces_search_request_attribute_filters_item.py +26 -0
  126. mirascope/api/_generated/traces/types/traces_search_request_attribute_filters_item_operator.py +7 -0
  127. mirascope/api/_generated/traces/types/traces_search_request_sort_by.py +7 -0
  128. mirascope/api/_generated/traces/types/traces_search_request_sort_order.py +5 -0
  129. mirascope/api/_generated/traces/types/traces_search_response.py +26 -0
  130. mirascope/api/_generated/traces/types/traces_search_response_spans_item.py +41 -0
  131. mirascope/api/_generated/types/__init__.py +18 -0
  132. mirascope/api/_generated/types/already_exists_error.py +1 -3
  133. mirascope/api/_generated/types/click_house_error.py +22 -0
  134. mirascope/api/_generated/types/database_error.py +1 -3
  135. mirascope/api/_generated/types/http_api_decode_error.py +1 -3
  136. mirascope/api/_generated/types/internal_server_error_body.py +49 -0
  137. mirascope/api/_generated/types/issue.py +1 -3
  138. mirascope/api/_generated/types/issue_tag.py +1 -8
  139. mirascope/api/_generated/types/not_found_error_body.py +1 -3
  140. mirascope/api/_generated/types/number_from_string.py +3 -0
  141. mirascope/api/_generated/types/permission_denied_error.py +1 -3
  142. mirascope/api/_generated/types/permission_denied_error_tag.py +1 -3
  143. mirascope/api/_generated/types/property_key_key.py +1 -3
  144. mirascope/api/_generated/types/stripe_error.py +20 -0
  145. mirascope/api/_generated/types/unauthorized_error_body.py +21 -0
  146. mirascope/api/_generated/types/unauthorized_error_tag.py +5 -0
  147. mirascope/llm/__init__.py +6 -2
  148. mirascope/llm/content/tool_call.py +6 -0
  149. mirascope/llm/exceptions.py +28 -0
  150. mirascope/llm/formatting/__init__.py +2 -2
  151. mirascope/llm/formatting/format.py +120 -8
  152. mirascope/llm/formatting/types.py +1 -56
  153. mirascope/llm/mcp/__init__.py +2 -2
  154. mirascope/llm/mcp/mcp_client.py +130 -0
  155. mirascope/llm/providers/__init__.py +26 -5
  156. mirascope/llm/providers/anthropic/__init__.py +3 -21
  157. mirascope/llm/providers/anthropic/_utils/__init__.py +2 -0
  158. mirascope/llm/providers/anthropic/_utils/beta_decode.py +4 -2
  159. mirascope/llm/providers/anthropic/_utils/beta_encode.py +13 -12
  160. mirascope/llm/providers/anthropic/_utils/decode.py +4 -2
  161. mirascope/llm/providers/anthropic/_utils/encode.py +57 -14
  162. mirascope/llm/providers/anthropic/_utils/errors.py +46 -0
  163. mirascope/llm/providers/anthropic/beta_provider.py +6 -0
  164. mirascope/llm/providers/anthropic/provider.py +5 -0
  165. mirascope/llm/providers/base/__init__.py +5 -2
  166. mirascope/llm/providers/base/_utils.py +2 -7
  167. mirascope/llm/providers/base/base_provider.py +173 -58
  168. mirascope/llm/providers/base/params.py +63 -34
  169. mirascope/llm/providers/google/__init__.py +2 -17
  170. mirascope/llm/providers/google/_utils/__init__.py +2 -0
  171. mirascope/llm/providers/google/_utils/decode.py +17 -8
  172. mirascope/llm/providers/google/_utils/encode.py +105 -16
  173. mirascope/llm/providers/google/_utils/errors.py +49 -0
  174. mirascope/llm/providers/google/model_info.py +1 -0
  175. mirascope/llm/providers/google/provider.py +9 -5
  176. mirascope/llm/providers/mirascope/__init__.py +5 -0
  177. mirascope/llm/providers/mirascope/_utils.py +77 -0
  178. mirascope/llm/providers/mirascope/provider.py +318 -0
  179. mirascope/llm/providers/mlx/__init__.py +2 -17
  180. mirascope/llm/providers/mlx/_utils.py +9 -2
  181. mirascope/llm/providers/mlx/provider.py +8 -0
  182. mirascope/llm/providers/ollama/__init__.py +1 -13
  183. mirascope/llm/providers/openai/__init__.py +10 -1
  184. mirascope/llm/providers/openai/_utils/__init__.py +5 -0
  185. mirascope/llm/providers/openai/_utils/errors.py +46 -0
  186. mirascope/llm/providers/openai/completions/__init__.py +2 -20
  187. mirascope/llm/providers/openai/completions/_utils/decode.py +14 -3
  188. mirascope/llm/providers/openai/completions/_utils/encode.py +15 -12
  189. mirascope/llm/providers/openai/completions/base_provider.py +6 -6
  190. mirascope/llm/providers/openai/provider.py +14 -1
  191. mirascope/llm/providers/openai/responses/__init__.py +1 -17
  192. mirascope/llm/providers/openai/responses/_utils/decode.py +2 -2
  193. mirascope/llm/providers/openai/responses/_utils/encode.py +43 -15
  194. mirascope/llm/providers/openai/responses/provider.py +13 -7
  195. mirascope/llm/providers/provider_id.py +1 -0
  196. mirascope/llm/providers/provider_registry.py +59 -3
  197. mirascope/llm/providers/together/__init__.py +1 -13
  198. mirascope/llm/responses/base_stream_response.py +24 -20
  199. mirascope/llm/tools/decorator.py +8 -4
  200. mirascope/llm/tools/tool_schema.py +33 -6
  201. mirascope/llm/tools/tools.py +84 -16
  202. mirascope/ops/__init__.py +60 -109
  203. mirascope/ops/_internal/closure.py +62 -11
  204. mirascope/ops/_internal/instrumentation/llm/llm.py +1 -2
  205. mirascope/ops/_internal/traced_functions.py +23 -4
  206. mirascope/ops/_internal/versioned_functions.py +54 -43
  207. {mirascope-2.0.0a4.dist-info → mirascope-2.0.0a6.dist-info}/METADATA +7 -7
  208. mirascope-2.0.0a6.dist-info/RECORD +316 -0
  209. mirascope/llm/formatting/_utils.py +0 -78
  210. mirascope/llm/mcp/client.py +0 -118
  211. mirascope/llm/providers/_missing_import_stubs.py +0 -49
  212. mirascope/llm/providers/load_provider.py +0 -54
  213. mirascope-2.0.0a4.dist-info/RECORD +0 -247
  214. {mirascope-2.0.0a4.dist-info → mirascope-2.0.0a6.dist-info}/WHEEL +0 -0
  215. {mirascope-2.0.0a4.dist-info → mirascope-2.0.0a6.dist-info}/licenses/LICENSE +0 -0
@@ -6,15 +6,35 @@ from json.decoder import JSONDecodeError
6
6
  from ..core.api_error import ApiError
7
7
  from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
8
8
  from ..core.http_response import AsyncHttpResponse, HttpResponse
9
+ from ..core.jsonable_encoder import jsonable_encoder
9
10
  from ..core.pydantic_utilities import parse_obj_as
10
11
  from ..core.request_options import RequestOptions
11
12
  from ..core.serialization import convert_and_respect_annotation_metadata
12
13
  from ..errors.bad_request_error import BadRequestError
14
+ from ..errors.conflict_error import ConflictError
15
+ from ..errors.forbidden_error import ForbiddenError
16
+ from ..errors.internal_server_error import InternalServerError
17
+ from ..errors.not_found_error import NotFoundError
18
+ from ..errors.unauthorized_error import UnauthorizedError
19
+ from ..types.already_exists_error import AlreadyExistsError
13
20
  from ..types.http_api_decode_error import HttpApiDecodeError
21
+ from ..types.not_found_error_body import NotFoundErrorBody
22
+ from ..types.permission_denied_error import PermissionDeniedError
23
+ from ..types.unauthorized_error_body import UnauthorizedErrorBody
14
24
  from .types.traces_create_request_resource_spans_item import (
15
25
  TracesCreateRequestResourceSpansItem,
16
26
  )
17
27
  from .types.traces_create_response import TracesCreateResponse
28
+ from .types.traces_get_analytics_summary_response import (
29
+ TracesGetAnalyticsSummaryResponse,
30
+ )
31
+ from .types.traces_get_trace_detail_response import TracesGetTraceDetailResponse
32
+ from .types.traces_search_request_attribute_filters_item import (
33
+ TracesSearchRequestAttributeFiltersItem,
34
+ )
35
+ from .types.traces_search_request_sort_by import TracesSearchRequestSortBy
36
+ from .types.traces_search_request_sort_order import TracesSearchRequestSortOrder
37
+ from .types.traces_search_response import TracesSearchResponse
18
38
 
19
39
  # this is used as the default value for optional parameters
20
40
  OMIT = typing.cast(typing.Any, ...)
@@ -80,6 +100,61 @@ class RawTracesClient:
80
100
  ),
81
101
  ),
82
102
  )
103
+ if _response.status_code == 401:
104
+ raise UnauthorizedError(
105
+ headers=dict(_response.headers),
106
+ body=typing.cast(
107
+ UnauthorizedErrorBody,
108
+ parse_obj_as(
109
+ type_=UnauthorizedErrorBody, # type: ignore
110
+ object_=_response.json(),
111
+ ),
112
+ ),
113
+ )
114
+ if _response.status_code == 403:
115
+ raise ForbiddenError(
116
+ headers=dict(_response.headers),
117
+ body=typing.cast(
118
+ PermissionDeniedError,
119
+ parse_obj_as(
120
+ type_=PermissionDeniedError, # type: ignore
121
+ object_=_response.json(),
122
+ ),
123
+ ),
124
+ )
125
+ if _response.status_code == 404:
126
+ raise NotFoundError(
127
+ headers=dict(_response.headers),
128
+ body=typing.cast(
129
+ NotFoundErrorBody,
130
+ parse_obj_as(
131
+ type_=NotFoundErrorBody, # type: ignore
132
+ object_=_response.json(),
133
+ ),
134
+ ),
135
+ )
136
+ if _response.status_code == 409:
137
+ raise ConflictError(
138
+ headers=dict(_response.headers),
139
+ body=typing.cast(
140
+ AlreadyExistsError,
141
+ parse_obj_as(
142
+ type_=AlreadyExistsError, # type: ignore
143
+ object_=_response.json(),
144
+ ),
145
+ ),
146
+ )
147
+ if _response.status_code == 500:
148
+ raise InternalServerError(
149
+ headers=dict(_response.headers),
150
+ body=typing.cast(
151
+ typing.Optional[typing.Any],
152
+ parse_obj_as(
153
+ type_=typing.Optional[typing.Any], # type: ignore
154
+ object_=_response.json(),
155
+ ),
156
+ ),
157
+ )
83
158
  _response_json = _response.json()
84
159
  except JSONDecodeError:
85
160
  raise ApiError(
@@ -93,39 +168,108 @@ class RawTracesClient:
93
168
  body=_response_json,
94
169
  )
95
170
 
96
-
97
- class AsyncRawTracesClient:
98
- def __init__(self, *, client_wrapper: AsyncClientWrapper):
99
- self._client_wrapper = client_wrapper
100
-
101
- async def create(
171
+ def search(
102
172
  self,
103
173
  *,
104
- resource_spans: typing.Sequence[TracesCreateRequestResourceSpansItem],
174
+ start_time: str,
175
+ end_time: str,
176
+ query: typing.Optional[str] = OMIT,
177
+ trace_id: typing.Optional[str] = OMIT,
178
+ span_id: typing.Optional[str] = OMIT,
179
+ model: typing.Optional[typing.Sequence[str]] = OMIT,
180
+ provider: typing.Optional[typing.Sequence[str]] = OMIT,
181
+ function_id: typing.Optional[str] = OMIT,
182
+ function_name: typing.Optional[str] = OMIT,
183
+ has_error: typing.Optional[bool] = OMIT,
184
+ min_tokens: typing.Optional[float] = OMIT,
185
+ max_tokens: typing.Optional[float] = OMIT,
186
+ min_duration: typing.Optional[float] = OMIT,
187
+ max_duration: typing.Optional[float] = OMIT,
188
+ attribute_filters: typing.Optional[
189
+ typing.Sequence[TracesSearchRequestAttributeFiltersItem]
190
+ ] = OMIT,
191
+ limit: typing.Optional[float] = OMIT,
192
+ offset: typing.Optional[float] = OMIT,
193
+ sort_by: typing.Optional[TracesSearchRequestSortBy] = OMIT,
194
+ sort_order: typing.Optional[TracesSearchRequestSortOrder] = OMIT,
105
195
  request_options: typing.Optional[RequestOptions] = None,
106
- ) -> AsyncHttpResponse[TracesCreateResponse]:
196
+ ) -> HttpResponse[TracesSearchResponse]:
107
197
  """
108
198
  Parameters
109
199
  ----------
110
- resource_spans : typing.Sequence[TracesCreateRequestResourceSpansItem]
200
+ start_time : str
201
+
202
+ end_time : str
203
+
204
+ query : typing.Optional[str]
205
+
206
+ trace_id : typing.Optional[str]
207
+
208
+ span_id : typing.Optional[str]
209
+
210
+ model : typing.Optional[typing.Sequence[str]]
211
+
212
+ provider : typing.Optional[typing.Sequence[str]]
213
+
214
+ function_id : typing.Optional[str]
215
+
216
+ function_name : typing.Optional[str]
217
+
218
+ has_error : typing.Optional[bool]
219
+
220
+ min_tokens : typing.Optional[float]
221
+
222
+ max_tokens : typing.Optional[float]
223
+
224
+ min_duration : typing.Optional[float]
225
+
226
+ max_duration : typing.Optional[float]
227
+
228
+ attribute_filters : typing.Optional[typing.Sequence[TracesSearchRequestAttributeFiltersItem]]
229
+
230
+ limit : typing.Optional[float]
231
+
232
+ offset : typing.Optional[float]
233
+
234
+ sort_by : typing.Optional[TracesSearchRequestSortBy]
235
+
236
+ sort_order : typing.Optional[TracesSearchRequestSortOrder]
111
237
 
112
238
  request_options : typing.Optional[RequestOptions]
113
239
  Request-specific configuration.
114
240
 
115
241
  Returns
116
242
  -------
117
- AsyncHttpResponse[TracesCreateResponse]
243
+ HttpResponse[TracesSearchResponse]
118
244
  Success
119
245
  """
120
- _response = await self._client_wrapper.httpx_client.request(
121
- "traces",
246
+ _response = self._client_wrapper.httpx_client.request(
247
+ "traces/search",
122
248
  method="POST",
123
249
  json={
124
- "resourceSpans": convert_and_respect_annotation_metadata(
125
- object_=resource_spans,
126
- annotation=typing.Sequence[TracesCreateRequestResourceSpansItem],
250
+ "startTime": start_time,
251
+ "endTime": end_time,
252
+ "query": query,
253
+ "traceId": trace_id,
254
+ "spanId": span_id,
255
+ "model": model,
256
+ "provider": provider,
257
+ "functionId": function_id,
258
+ "functionName": function_name,
259
+ "hasError": has_error,
260
+ "minTokens": min_tokens,
261
+ "maxTokens": max_tokens,
262
+ "minDuration": min_duration,
263
+ "maxDuration": max_duration,
264
+ "attributeFilters": convert_and_respect_annotation_metadata(
265
+ object_=attribute_filters,
266
+ annotation=typing.Sequence[TracesSearchRequestAttributeFiltersItem],
127
267
  direction="write",
128
268
  ),
269
+ "limit": limit,
270
+ "offset": offset,
271
+ "sortBy": sort_by,
272
+ "sortOrder": sort_order,
129
273
  },
130
274
  headers={
131
275
  "content-type": "application/json",
@@ -136,13 +280,214 @@ class AsyncRawTracesClient:
136
280
  try:
137
281
  if 200 <= _response.status_code < 300:
138
282
  _data = typing.cast(
139
- TracesCreateResponse,
283
+ TracesSearchResponse,
140
284
  parse_obj_as(
141
- type_=TracesCreateResponse, # type: ignore
285
+ type_=TracesSearchResponse, # type: ignore
142
286
  object_=_response.json(),
143
287
  ),
144
288
  )
145
- return AsyncHttpResponse(response=_response, data=_data)
289
+ return HttpResponse(response=_response, data=_data)
290
+ if _response.status_code == 400:
291
+ raise BadRequestError(
292
+ headers=dict(_response.headers),
293
+ body=typing.cast(
294
+ HttpApiDecodeError,
295
+ parse_obj_as(
296
+ type_=HttpApiDecodeError, # type: ignore
297
+ object_=_response.json(),
298
+ ),
299
+ ),
300
+ )
301
+ if _response.status_code == 401:
302
+ raise UnauthorizedError(
303
+ headers=dict(_response.headers),
304
+ body=typing.cast(
305
+ UnauthorizedErrorBody,
306
+ parse_obj_as(
307
+ type_=UnauthorizedErrorBody, # type: ignore
308
+ object_=_response.json(),
309
+ ),
310
+ ),
311
+ )
312
+ if _response.status_code == 403:
313
+ raise ForbiddenError(
314
+ headers=dict(_response.headers),
315
+ body=typing.cast(
316
+ PermissionDeniedError,
317
+ parse_obj_as(
318
+ type_=PermissionDeniedError, # type: ignore
319
+ object_=_response.json(),
320
+ ),
321
+ ),
322
+ )
323
+ if _response.status_code == 500:
324
+ raise InternalServerError(
325
+ headers=dict(_response.headers),
326
+ body=typing.cast(
327
+ typing.Optional[typing.Any],
328
+ parse_obj_as(
329
+ type_=typing.Optional[typing.Any], # type: ignore
330
+ object_=_response.json(),
331
+ ),
332
+ ),
333
+ )
334
+ _response_json = _response.json()
335
+ except JSONDecodeError:
336
+ raise ApiError(
337
+ status_code=_response.status_code,
338
+ headers=dict(_response.headers),
339
+ body=_response.text,
340
+ )
341
+ raise ApiError(
342
+ status_code=_response.status_code,
343
+ headers=dict(_response.headers),
344
+ body=_response_json,
345
+ )
346
+
347
+ def gettracedetail(
348
+ self, trace_id: str, *, request_options: typing.Optional[RequestOptions] = None
349
+ ) -> HttpResponse[TracesGetTraceDetailResponse]:
350
+ """
351
+ Parameters
352
+ ----------
353
+ trace_id : str
354
+
355
+ request_options : typing.Optional[RequestOptions]
356
+ Request-specific configuration.
357
+
358
+ Returns
359
+ -------
360
+ HttpResponse[TracesGetTraceDetailResponse]
361
+ Success
362
+ """
363
+ _response = self._client_wrapper.httpx_client.request(
364
+ f"traces/{jsonable_encoder(trace_id)}",
365
+ method="GET",
366
+ request_options=request_options,
367
+ )
368
+ try:
369
+ if 200 <= _response.status_code < 300:
370
+ _data = typing.cast(
371
+ TracesGetTraceDetailResponse,
372
+ parse_obj_as(
373
+ type_=TracesGetTraceDetailResponse, # type: ignore
374
+ object_=_response.json(),
375
+ ),
376
+ )
377
+ return HttpResponse(response=_response, data=_data)
378
+ if _response.status_code == 400:
379
+ raise BadRequestError(
380
+ headers=dict(_response.headers),
381
+ body=typing.cast(
382
+ HttpApiDecodeError,
383
+ parse_obj_as(
384
+ type_=HttpApiDecodeError, # type: ignore
385
+ object_=_response.json(),
386
+ ),
387
+ ),
388
+ )
389
+ if _response.status_code == 401:
390
+ raise UnauthorizedError(
391
+ headers=dict(_response.headers),
392
+ body=typing.cast(
393
+ UnauthorizedErrorBody,
394
+ parse_obj_as(
395
+ type_=UnauthorizedErrorBody, # type: ignore
396
+ object_=_response.json(),
397
+ ),
398
+ ),
399
+ )
400
+ if _response.status_code == 403:
401
+ raise ForbiddenError(
402
+ headers=dict(_response.headers),
403
+ body=typing.cast(
404
+ PermissionDeniedError,
405
+ parse_obj_as(
406
+ type_=PermissionDeniedError, # type: ignore
407
+ object_=_response.json(),
408
+ ),
409
+ ),
410
+ )
411
+ if _response.status_code == 404:
412
+ raise NotFoundError(
413
+ headers=dict(_response.headers),
414
+ body=typing.cast(
415
+ NotFoundErrorBody,
416
+ parse_obj_as(
417
+ type_=NotFoundErrorBody, # type: ignore
418
+ object_=_response.json(),
419
+ ),
420
+ ),
421
+ )
422
+ if _response.status_code == 500:
423
+ raise InternalServerError(
424
+ headers=dict(_response.headers),
425
+ body=typing.cast(
426
+ typing.Optional[typing.Any],
427
+ parse_obj_as(
428
+ type_=typing.Optional[typing.Any], # type: ignore
429
+ object_=_response.json(),
430
+ ),
431
+ ),
432
+ )
433
+ _response_json = _response.json()
434
+ except JSONDecodeError:
435
+ raise ApiError(
436
+ status_code=_response.status_code,
437
+ headers=dict(_response.headers),
438
+ body=_response.text,
439
+ )
440
+ raise ApiError(
441
+ status_code=_response.status_code,
442
+ headers=dict(_response.headers),
443
+ body=_response_json,
444
+ )
445
+
446
+ def getanalyticssummary(
447
+ self,
448
+ *,
449
+ start_time: str,
450
+ end_time: str,
451
+ function_id: typing.Optional[str] = None,
452
+ request_options: typing.Optional[RequestOptions] = None,
453
+ ) -> HttpResponse[TracesGetAnalyticsSummaryResponse]:
454
+ """
455
+ Parameters
456
+ ----------
457
+ start_time : str
458
+
459
+ end_time : str
460
+
461
+ function_id : typing.Optional[str]
462
+
463
+ request_options : typing.Optional[RequestOptions]
464
+ Request-specific configuration.
465
+
466
+ Returns
467
+ -------
468
+ HttpResponse[TracesGetAnalyticsSummaryResponse]
469
+ Success
470
+ """
471
+ _response = self._client_wrapper.httpx_client.request(
472
+ "traces/analytics",
473
+ method="GET",
474
+ params={
475
+ "startTime": start_time,
476
+ "endTime": end_time,
477
+ "functionId": function_id,
478
+ },
479
+ request_options=request_options,
480
+ )
481
+ try:
482
+ if 200 <= _response.status_code < 300:
483
+ _data = typing.cast(
484
+ TracesGetAnalyticsSummaryResponse,
485
+ parse_obj_as(
486
+ type_=TracesGetAnalyticsSummaryResponse, # type: ignore
487
+ object_=_response.json(),
488
+ ),
489
+ )
490
+ return HttpResponse(response=_response, data=_data)
146
491
  if _response.status_code == 400:
147
492
  raise BadRequestError(
148
493
  headers=dict(_response.headers),
@@ -154,6 +499,545 @@ class AsyncRawTracesClient:
154
499
  ),
155
500
  ),
156
501
  )
502
+ if _response.status_code == 401:
503
+ raise UnauthorizedError(
504
+ headers=dict(_response.headers),
505
+ body=typing.cast(
506
+ UnauthorizedErrorBody,
507
+ parse_obj_as(
508
+ type_=UnauthorizedErrorBody, # type: ignore
509
+ object_=_response.json(),
510
+ ),
511
+ ),
512
+ )
513
+ if _response.status_code == 403:
514
+ raise ForbiddenError(
515
+ headers=dict(_response.headers),
516
+ body=typing.cast(
517
+ PermissionDeniedError,
518
+ parse_obj_as(
519
+ type_=PermissionDeniedError, # type: ignore
520
+ object_=_response.json(),
521
+ ),
522
+ ),
523
+ )
524
+ if _response.status_code == 500:
525
+ raise InternalServerError(
526
+ headers=dict(_response.headers),
527
+ body=typing.cast(
528
+ typing.Optional[typing.Any],
529
+ parse_obj_as(
530
+ type_=typing.Optional[typing.Any], # type: ignore
531
+ object_=_response.json(),
532
+ ),
533
+ ),
534
+ )
535
+ _response_json = _response.json()
536
+ except JSONDecodeError:
537
+ raise ApiError(
538
+ status_code=_response.status_code,
539
+ headers=dict(_response.headers),
540
+ body=_response.text,
541
+ )
542
+ raise ApiError(
543
+ status_code=_response.status_code,
544
+ headers=dict(_response.headers),
545
+ body=_response_json,
546
+ )
547
+
548
+
549
+ class AsyncRawTracesClient:
550
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
551
+ self._client_wrapper = client_wrapper
552
+
553
+ async def create(
554
+ self,
555
+ *,
556
+ resource_spans: typing.Sequence[TracesCreateRequestResourceSpansItem],
557
+ request_options: typing.Optional[RequestOptions] = None,
558
+ ) -> AsyncHttpResponse[TracesCreateResponse]:
559
+ """
560
+ Parameters
561
+ ----------
562
+ resource_spans : typing.Sequence[TracesCreateRequestResourceSpansItem]
563
+
564
+ request_options : typing.Optional[RequestOptions]
565
+ Request-specific configuration.
566
+
567
+ Returns
568
+ -------
569
+ AsyncHttpResponse[TracesCreateResponse]
570
+ Success
571
+ """
572
+ _response = await self._client_wrapper.httpx_client.request(
573
+ "traces",
574
+ method="POST",
575
+ json={
576
+ "resourceSpans": convert_and_respect_annotation_metadata(
577
+ object_=resource_spans,
578
+ annotation=typing.Sequence[TracesCreateRequestResourceSpansItem],
579
+ direction="write",
580
+ ),
581
+ },
582
+ headers={
583
+ "content-type": "application/json",
584
+ },
585
+ request_options=request_options,
586
+ omit=OMIT,
587
+ )
588
+ try:
589
+ if 200 <= _response.status_code < 300:
590
+ _data = typing.cast(
591
+ TracesCreateResponse,
592
+ parse_obj_as(
593
+ type_=TracesCreateResponse, # type: ignore
594
+ object_=_response.json(),
595
+ ),
596
+ )
597
+ return AsyncHttpResponse(response=_response, data=_data)
598
+ if _response.status_code == 400:
599
+ raise BadRequestError(
600
+ headers=dict(_response.headers),
601
+ body=typing.cast(
602
+ HttpApiDecodeError,
603
+ parse_obj_as(
604
+ type_=HttpApiDecodeError, # type: ignore
605
+ object_=_response.json(),
606
+ ),
607
+ ),
608
+ )
609
+ if _response.status_code == 401:
610
+ raise UnauthorizedError(
611
+ headers=dict(_response.headers),
612
+ body=typing.cast(
613
+ UnauthorizedErrorBody,
614
+ parse_obj_as(
615
+ type_=UnauthorizedErrorBody, # type: ignore
616
+ object_=_response.json(),
617
+ ),
618
+ ),
619
+ )
620
+ if _response.status_code == 403:
621
+ raise ForbiddenError(
622
+ headers=dict(_response.headers),
623
+ body=typing.cast(
624
+ PermissionDeniedError,
625
+ parse_obj_as(
626
+ type_=PermissionDeniedError, # type: ignore
627
+ object_=_response.json(),
628
+ ),
629
+ ),
630
+ )
631
+ if _response.status_code == 404:
632
+ raise NotFoundError(
633
+ headers=dict(_response.headers),
634
+ body=typing.cast(
635
+ NotFoundErrorBody,
636
+ parse_obj_as(
637
+ type_=NotFoundErrorBody, # type: ignore
638
+ object_=_response.json(),
639
+ ),
640
+ ),
641
+ )
642
+ if _response.status_code == 409:
643
+ raise ConflictError(
644
+ headers=dict(_response.headers),
645
+ body=typing.cast(
646
+ AlreadyExistsError,
647
+ parse_obj_as(
648
+ type_=AlreadyExistsError, # type: ignore
649
+ object_=_response.json(),
650
+ ),
651
+ ),
652
+ )
653
+ if _response.status_code == 500:
654
+ raise InternalServerError(
655
+ headers=dict(_response.headers),
656
+ body=typing.cast(
657
+ typing.Optional[typing.Any],
658
+ parse_obj_as(
659
+ type_=typing.Optional[typing.Any], # type: ignore
660
+ object_=_response.json(),
661
+ ),
662
+ ),
663
+ )
664
+ _response_json = _response.json()
665
+ except JSONDecodeError:
666
+ raise ApiError(
667
+ status_code=_response.status_code,
668
+ headers=dict(_response.headers),
669
+ body=_response.text,
670
+ )
671
+ raise ApiError(
672
+ status_code=_response.status_code,
673
+ headers=dict(_response.headers),
674
+ body=_response_json,
675
+ )
676
+
677
+ async def search(
678
+ self,
679
+ *,
680
+ start_time: str,
681
+ end_time: str,
682
+ query: typing.Optional[str] = OMIT,
683
+ trace_id: typing.Optional[str] = OMIT,
684
+ span_id: typing.Optional[str] = OMIT,
685
+ model: typing.Optional[typing.Sequence[str]] = OMIT,
686
+ provider: typing.Optional[typing.Sequence[str]] = OMIT,
687
+ function_id: typing.Optional[str] = OMIT,
688
+ function_name: typing.Optional[str] = OMIT,
689
+ has_error: typing.Optional[bool] = OMIT,
690
+ min_tokens: typing.Optional[float] = OMIT,
691
+ max_tokens: typing.Optional[float] = OMIT,
692
+ min_duration: typing.Optional[float] = OMIT,
693
+ max_duration: typing.Optional[float] = OMIT,
694
+ attribute_filters: typing.Optional[
695
+ typing.Sequence[TracesSearchRequestAttributeFiltersItem]
696
+ ] = OMIT,
697
+ limit: typing.Optional[float] = OMIT,
698
+ offset: typing.Optional[float] = OMIT,
699
+ sort_by: typing.Optional[TracesSearchRequestSortBy] = OMIT,
700
+ sort_order: typing.Optional[TracesSearchRequestSortOrder] = OMIT,
701
+ request_options: typing.Optional[RequestOptions] = None,
702
+ ) -> AsyncHttpResponse[TracesSearchResponse]:
703
+ """
704
+ Parameters
705
+ ----------
706
+ start_time : str
707
+
708
+ end_time : str
709
+
710
+ query : typing.Optional[str]
711
+
712
+ trace_id : typing.Optional[str]
713
+
714
+ span_id : typing.Optional[str]
715
+
716
+ model : typing.Optional[typing.Sequence[str]]
717
+
718
+ provider : typing.Optional[typing.Sequence[str]]
719
+
720
+ function_id : typing.Optional[str]
721
+
722
+ function_name : typing.Optional[str]
723
+
724
+ has_error : typing.Optional[bool]
725
+
726
+ min_tokens : typing.Optional[float]
727
+
728
+ max_tokens : typing.Optional[float]
729
+
730
+ min_duration : typing.Optional[float]
731
+
732
+ max_duration : typing.Optional[float]
733
+
734
+ attribute_filters : typing.Optional[typing.Sequence[TracesSearchRequestAttributeFiltersItem]]
735
+
736
+ limit : typing.Optional[float]
737
+
738
+ offset : typing.Optional[float]
739
+
740
+ sort_by : typing.Optional[TracesSearchRequestSortBy]
741
+
742
+ sort_order : typing.Optional[TracesSearchRequestSortOrder]
743
+
744
+ request_options : typing.Optional[RequestOptions]
745
+ Request-specific configuration.
746
+
747
+ Returns
748
+ -------
749
+ AsyncHttpResponse[TracesSearchResponse]
750
+ Success
751
+ """
752
+ _response = await self._client_wrapper.httpx_client.request(
753
+ "traces/search",
754
+ method="POST",
755
+ json={
756
+ "startTime": start_time,
757
+ "endTime": end_time,
758
+ "query": query,
759
+ "traceId": trace_id,
760
+ "spanId": span_id,
761
+ "model": model,
762
+ "provider": provider,
763
+ "functionId": function_id,
764
+ "functionName": function_name,
765
+ "hasError": has_error,
766
+ "minTokens": min_tokens,
767
+ "maxTokens": max_tokens,
768
+ "minDuration": min_duration,
769
+ "maxDuration": max_duration,
770
+ "attributeFilters": convert_and_respect_annotation_metadata(
771
+ object_=attribute_filters,
772
+ annotation=typing.Sequence[TracesSearchRequestAttributeFiltersItem],
773
+ direction="write",
774
+ ),
775
+ "limit": limit,
776
+ "offset": offset,
777
+ "sortBy": sort_by,
778
+ "sortOrder": sort_order,
779
+ },
780
+ headers={
781
+ "content-type": "application/json",
782
+ },
783
+ request_options=request_options,
784
+ omit=OMIT,
785
+ )
786
+ try:
787
+ if 200 <= _response.status_code < 300:
788
+ _data = typing.cast(
789
+ TracesSearchResponse,
790
+ parse_obj_as(
791
+ type_=TracesSearchResponse, # type: ignore
792
+ object_=_response.json(),
793
+ ),
794
+ )
795
+ return AsyncHttpResponse(response=_response, data=_data)
796
+ if _response.status_code == 400:
797
+ raise BadRequestError(
798
+ headers=dict(_response.headers),
799
+ body=typing.cast(
800
+ HttpApiDecodeError,
801
+ parse_obj_as(
802
+ type_=HttpApiDecodeError, # type: ignore
803
+ object_=_response.json(),
804
+ ),
805
+ ),
806
+ )
807
+ if _response.status_code == 401:
808
+ raise UnauthorizedError(
809
+ headers=dict(_response.headers),
810
+ body=typing.cast(
811
+ UnauthorizedErrorBody,
812
+ parse_obj_as(
813
+ type_=UnauthorizedErrorBody, # type: ignore
814
+ object_=_response.json(),
815
+ ),
816
+ ),
817
+ )
818
+ if _response.status_code == 403:
819
+ raise ForbiddenError(
820
+ headers=dict(_response.headers),
821
+ body=typing.cast(
822
+ PermissionDeniedError,
823
+ parse_obj_as(
824
+ type_=PermissionDeniedError, # type: ignore
825
+ object_=_response.json(),
826
+ ),
827
+ ),
828
+ )
829
+ if _response.status_code == 500:
830
+ raise InternalServerError(
831
+ headers=dict(_response.headers),
832
+ body=typing.cast(
833
+ typing.Optional[typing.Any],
834
+ parse_obj_as(
835
+ type_=typing.Optional[typing.Any], # type: ignore
836
+ object_=_response.json(),
837
+ ),
838
+ ),
839
+ )
840
+ _response_json = _response.json()
841
+ except JSONDecodeError:
842
+ raise ApiError(
843
+ status_code=_response.status_code,
844
+ headers=dict(_response.headers),
845
+ body=_response.text,
846
+ )
847
+ raise ApiError(
848
+ status_code=_response.status_code,
849
+ headers=dict(_response.headers),
850
+ body=_response_json,
851
+ )
852
+
853
+ async def gettracedetail(
854
+ self, trace_id: str, *, request_options: typing.Optional[RequestOptions] = None
855
+ ) -> AsyncHttpResponse[TracesGetTraceDetailResponse]:
856
+ """
857
+ Parameters
858
+ ----------
859
+ trace_id : str
860
+
861
+ request_options : typing.Optional[RequestOptions]
862
+ Request-specific configuration.
863
+
864
+ Returns
865
+ -------
866
+ AsyncHttpResponse[TracesGetTraceDetailResponse]
867
+ Success
868
+ """
869
+ _response = await self._client_wrapper.httpx_client.request(
870
+ f"traces/{jsonable_encoder(trace_id)}",
871
+ method="GET",
872
+ request_options=request_options,
873
+ )
874
+ try:
875
+ if 200 <= _response.status_code < 300:
876
+ _data = typing.cast(
877
+ TracesGetTraceDetailResponse,
878
+ parse_obj_as(
879
+ type_=TracesGetTraceDetailResponse, # type: ignore
880
+ object_=_response.json(),
881
+ ),
882
+ )
883
+ return AsyncHttpResponse(response=_response, data=_data)
884
+ if _response.status_code == 400:
885
+ raise BadRequestError(
886
+ headers=dict(_response.headers),
887
+ body=typing.cast(
888
+ HttpApiDecodeError,
889
+ parse_obj_as(
890
+ type_=HttpApiDecodeError, # type: ignore
891
+ object_=_response.json(),
892
+ ),
893
+ ),
894
+ )
895
+ if _response.status_code == 401:
896
+ raise UnauthorizedError(
897
+ headers=dict(_response.headers),
898
+ body=typing.cast(
899
+ UnauthorizedErrorBody,
900
+ parse_obj_as(
901
+ type_=UnauthorizedErrorBody, # type: ignore
902
+ object_=_response.json(),
903
+ ),
904
+ ),
905
+ )
906
+ if _response.status_code == 403:
907
+ raise ForbiddenError(
908
+ headers=dict(_response.headers),
909
+ body=typing.cast(
910
+ PermissionDeniedError,
911
+ parse_obj_as(
912
+ type_=PermissionDeniedError, # type: ignore
913
+ object_=_response.json(),
914
+ ),
915
+ ),
916
+ )
917
+ if _response.status_code == 404:
918
+ raise NotFoundError(
919
+ headers=dict(_response.headers),
920
+ body=typing.cast(
921
+ NotFoundErrorBody,
922
+ parse_obj_as(
923
+ type_=NotFoundErrorBody, # type: ignore
924
+ object_=_response.json(),
925
+ ),
926
+ ),
927
+ )
928
+ if _response.status_code == 500:
929
+ raise InternalServerError(
930
+ headers=dict(_response.headers),
931
+ body=typing.cast(
932
+ typing.Optional[typing.Any],
933
+ parse_obj_as(
934
+ type_=typing.Optional[typing.Any], # type: ignore
935
+ object_=_response.json(),
936
+ ),
937
+ ),
938
+ )
939
+ _response_json = _response.json()
940
+ except JSONDecodeError:
941
+ raise ApiError(
942
+ status_code=_response.status_code,
943
+ headers=dict(_response.headers),
944
+ body=_response.text,
945
+ )
946
+ raise ApiError(
947
+ status_code=_response.status_code,
948
+ headers=dict(_response.headers),
949
+ body=_response_json,
950
+ )
951
+
952
+ async def getanalyticssummary(
953
+ self,
954
+ *,
955
+ start_time: str,
956
+ end_time: str,
957
+ function_id: typing.Optional[str] = None,
958
+ request_options: typing.Optional[RequestOptions] = None,
959
+ ) -> AsyncHttpResponse[TracesGetAnalyticsSummaryResponse]:
960
+ """
961
+ Parameters
962
+ ----------
963
+ start_time : str
964
+
965
+ end_time : str
966
+
967
+ function_id : typing.Optional[str]
968
+
969
+ request_options : typing.Optional[RequestOptions]
970
+ Request-specific configuration.
971
+
972
+ Returns
973
+ -------
974
+ AsyncHttpResponse[TracesGetAnalyticsSummaryResponse]
975
+ Success
976
+ """
977
+ _response = await self._client_wrapper.httpx_client.request(
978
+ "traces/analytics",
979
+ method="GET",
980
+ params={
981
+ "startTime": start_time,
982
+ "endTime": end_time,
983
+ "functionId": function_id,
984
+ },
985
+ request_options=request_options,
986
+ )
987
+ try:
988
+ if 200 <= _response.status_code < 300:
989
+ _data = typing.cast(
990
+ TracesGetAnalyticsSummaryResponse,
991
+ parse_obj_as(
992
+ type_=TracesGetAnalyticsSummaryResponse, # type: ignore
993
+ object_=_response.json(),
994
+ ),
995
+ )
996
+ return AsyncHttpResponse(response=_response, data=_data)
997
+ if _response.status_code == 400:
998
+ raise BadRequestError(
999
+ headers=dict(_response.headers),
1000
+ body=typing.cast(
1001
+ HttpApiDecodeError,
1002
+ parse_obj_as(
1003
+ type_=HttpApiDecodeError, # type: ignore
1004
+ object_=_response.json(),
1005
+ ),
1006
+ ),
1007
+ )
1008
+ if _response.status_code == 401:
1009
+ raise UnauthorizedError(
1010
+ headers=dict(_response.headers),
1011
+ body=typing.cast(
1012
+ UnauthorizedErrorBody,
1013
+ parse_obj_as(
1014
+ type_=UnauthorizedErrorBody, # type: ignore
1015
+ object_=_response.json(),
1016
+ ),
1017
+ ),
1018
+ )
1019
+ if _response.status_code == 403:
1020
+ raise ForbiddenError(
1021
+ headers=dict(_response.headers),
1022
+ body=typing.cast(
1023
+ PermissionDeniedError,
1024
+ parse_obj_as(
1025
+ type_=PermissionDeniedError, # type: ignore
1026
+ object_=_response.json(),
1027
+ ),
1028
+ ),
1029
+ )
1030
+ if _response.status_code == 500:
1031
+ raise InternalServerError(
1032
+ headers=dict(_response.headers),
1033
+ body=typing.cast(
1034
+ typing.Optional[typing.Any],
1035
+ parse_obj_as(
1036
+ type_=typing.Optional[typing.Any], # type: ignore
1037
+ object_=_response.json(),
1038
+ ),
1039
+ ),
1040
+ )
157
1041
  _response_json = _response.json()
158
1042
  except JSONDecodeError:
159
1043
  raise ApiError(