mirascope 2.0.0__py3-none-any.whl → 2.0.0a0__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 (442) hide show
  1. mirascope/__init__.py +2 -11
  2. mirascope/graphs/__init__.py +22 -0
  3. mirascope/graphs/finite_state_machine.py +625 -0
  4. mirascope/llm/__init__.py +16 -101
  5. mirascope/llm/agents/__init__.py +15 -0
  6. mirascope/llm/agents/agent.py +97 -0
  7. mirascope/llm/agents/agent_template.py +45 -0
  8. mirascope/llm/agents/decorator.py +176 -0
  9. mirascope/llm/calls/__init__.py +1 -2
  10. mirascope/llm/calls/base_call.py +33 -0
  11. mirascope/llm/calls/calls.py +58 -84
  12. mirascope/llm/calls/decorator.py +120 -140
  13. mirascope/llm/clients/__init__.py +34 -0
  14. mirascope/llm/clients/anthropic/__init__.py +11 -0
  15. mirascope/llm/{providers/openai/completions → clients/anthropic}/_utils/__init__.py +0 -2
  16. mirascope/llm/{providers → clients}/anthropic/_utils/decode.py +22 -66
  17. mirascope/llm/clients/anthropic/_utils/encode.py +243 -0
  18. mirascope/llm/clients/anthropic/clients.py +819 -0
  19. mirascope/llm/clients/anthropic/model_ids.py +8 -0
  20. mirascope/llm/{providers → clients}/base/__init__.py +5 -4
  21. mirascope/llm/{providers → clients}/base/_utils.py +17 -78
  22. mirascope/llm/{providers/base/base_provider.py → clients/base/client.py} +145 -468
  23. mirascope/llm/{models → clients/base}/params.py +37 -16
  24. mirascope/llm/clients/google/__init__.py +6 -0
  25. mirascope/llm/{providers/openai/responses → clients/google}/_utils/__init__.py +0 -2
  26. mirascope/llm/{providers → clients}/google/_utils/decode.py +22 -98
  27. mirascope/llm/{providers → clients}/google/_utils/encode.py +46 -168
  28. mirascope/llm/clients/google/clients.py +853 -0
  29. mirascope/llm/clients/google/model_ids.py +15 -0
  30. mirascope/llm/clients/openai/__init__.py +25 -0
  31. mirascope/llm/clients/openai/completions/__init__.py +9 -0
  32. mirascope/llm/{providers/google → clients/openai/completions}/_utils/__init__.py +0 -4
  33. mirascope/llm/{providers → clients}/openai/completions/_utils/decode.py +9 -74
  34. mirascope/llm/{providers → clients}/openai/completions/_utils/encode.py +52 -70
  35. mirascope/llm/clients/openai/completions/_utils/model_features.py +81 -0
  36. mirascope/llm/clients/openai/completions/clients.py +833 -0
  37. mirascope/llm/clients/openai/completions/model_ids.py +8 -0
  38. mirascope/llm/clients/openai/responses/__init__.py +9 -0
  39. mirascope/llm/clients/openai/responses/_utils/__init__.py +13 -0
  40. mirascope/llm/{providers → clients}/openai/responses/_utils/decode.py +14 -80
  41. mirascope/llm/{providers → clients}/openai/responses/_utils/encode.py +41 -92
  42. mirascope/llm/clients/openai/responses/_utils/model_features.py +87 -0
  43. mirascope/llm/clients/openai/responses/clients.py +832 -0
  44. mirascope/llm/clients/openai/responses/model_ids.py +8 -0
  45. mirascope/llm/clients/openai/shared/__init__.py +7 -0
  46. mirascope/llm/clients/openai/shared/_utils.py +55 -0
  47. mirascope/llm/clients/providers.py +175 -0
  48. mirascope/llm/content/__init__.py +2 -3
  49. mirascope/llm/content/tool_call.py +0 -6
  50. mirascope/llm/content/tool_output.py +5 -22
  51. mirascope/llm/context/_utils.py +6 -19
  52. mirascope/llm/exceptions.py +43 -298
  53. mirascope/llm/formatting/__init__.py +2 -19
  54. mirascope/llm/formatting/_utils.py +74 -0
  55. mirascope/llm/formatting/format.py +30 -219
  56. mirascope/llm/formatting/from_call_args.py +2 -2
  57. mirascope/llm/formatting/partial.py +7 -80
  58. mirascope/llm/formatting/types.py +64 -21
  59. mirascope/llm/mcp/__init__.py +2 -2
  60. mirascope/llm/mcp/client.py +118 -0
  61. mirascope/llm/messages/__init__.py +0 -3
  62. mirascope/llm/messages/message.py +5 -13
  63. mirascope/llm/models/__init__.py +2 -7
  64. mirascope/llm/models/models.py +139 -315
  65. mirascope/llm/prompts/__init__.py +12 -13
  66. mirascope/llm/prompts/_utils.py +43 -14
  67. mirascope/llm/prompts/decorator.py +204 -144
  68. mirascope/llm/prompts/protocols.py +59 -25
  69. mirascope/llm/responses/__init__.py +1 -9
  70. mirascope/llm/responses/_utils.py +12 -102
  71. mirascope/llm/responses/base_response.py +6 -18
  72. mirascope/llm/responses/base_stream_response.py +50 -173
  73. mirascope/llm/responses/finish_reason.py +0 -1
  74. mirascope/llm/responses/response.py +13 -34
  75. mirascope/llm/responses/root_response.py +29 -100
  76. mirascope/llm/responses/stream_response.py +31 -40
  77. mirascope/llm/tools/__init__.py +2 -9
  78. mirascope/llm/tools/_utils.py +3 -12
  79. mirascope/llm/tools/decorator.py +16 -25
  80. mirascope/llm/tools/protocols.py +4 -4
  81. mirascope/llm/tools/tool_schema.py +19 -87
  82. mirascope/llm/tools/toolkit.py +27 -35
  83. mirascope/llm/tools/tools.py +41 -135
  84. {mirascope-2.0.0.dist-info → mirascope-2.0.0a0.dist-info}/METADATA +9 -95
  85. mirascope-2.0.0a0.dist-info/RECORD +101 -0
  86. {mirascope-2.0.0.dist-info → mirascope-2.0.0a0.dist-info}/WHEEL +1 -1
  87. {mirascope-2.0.0.dist-info → mirascope-2.0.0a0.dist-info}/licenses/LICENSE +1 -1
  88. mirascope/_stubs.py +0 -363
  89. mirascope/api/__init__.py +0 -14
  90. mirascope/api/_generated/README.md +0 -207
  91. mirascope/api/_generated/__init__.py +0 -440
  92. mirascope/api/_generated/annotations/__init__.py +0 -33
  93. mirascope/api/_generated/annotations/client.py +0 -506
  94. mirascope/api/_generated/annotations/raw_client.py +0 -1414
  95. mirascope/api/_generated/annotations/types/__init__.py +0 -31
  96. mirascope/api/_generated/annotations/types/annotations_create_request_label.py +0 -5
  97. mirascope/api/_generated/annotations/types/annotations_create_response.py +0 -48
  98. mirascope/api/_generated/annotations/types/annotations_create_response_label.py +0 -5
  99. mirascope/api/_generated/annotations/types/annotations_get_response.py +0 -48
  100. mirascope/api/_generated/annotations/types/annotations_get_response_label.py +0 -5
  101. mirascope/api/_generated/annotations/types/annotations_list_request_label.py +0 -5
  102. mirascope/api/_generated/annotations/types/annotations_list_response.py +0 -21
  103. mirascope/api/_generated/annotations/types/annotations_list_response_annotations_item.py +0 -50
  104. mirascope/api/_generated/annotations/types/annotations_list_response_annotations_item_label.py +0 -5
  105. mirascope/api/_generated/annotations/types/annotations_update_request_label.py +0 -5
  106. mirascope/api/_generated/annotations/types/annotations_update_response.py +0 -48
  107. mirascope/api/_generated/annotations/types/annotations_update_response_label.py +0 -5
  108. mirascope/api/_generated/api_keys/__init__.py +0 -17
  109. mirascope/api/_generated/api_keys/client.py +0 -530
  110. mirascope/api/_generated/api_keys/raw_client.py +0 -1236
  111. mirascope/api/_generated/api_keys/types/__init__.py +0 -15
  112. mirascope/api/_generated/api_keys/types/api_keys_create_response.py +0 -28
  113. mirascope/api/_generated/api_keys/types/api_keys_get_response.py +0 -27
  114. mirascope/api/_generated/api_keys/types/api_keys_list_all_for_org_response_item.py +0 -40
  115. mirascope/api/_generated/api_keys/types/api_keys_list_response_item.py +0 -27
  116. mirascope/api/_generated/client.py +0 -211
  117. mirascope/api/_generated/core/__init__.py +0 -52
  118. mirascope/api/_generated/core/api_error.py +0 -23
  119. mirascope/api/_generated/core/client_wrapper.py +0 -46
  120. mirascope/api/_generated/core/datetime_utils.py +0 -28
  121. mirascope/api/_generated/core/file.py +0 -67
  122. mirascope/api/_generated/core/force_multipart.py +0 -16
  123. mirascope/api/_generated/core/http_client.py +0 -543
  124. mirascope/api/_generated/core/http_response.py +0 -55
  125. mirascope/api/_generated/core/jsonable_encoder.py +0 -100
  126. mirascope/api/_generated/core/pydantic_utilities.py +0 -255
  127. mirascope/api/_generated/core/query_encoder.py +0 -58
  128. mirascope/api/_generated/core/remove_none_from_dict.py +0 -11
  129. mirascope/api/_generated/core/request_options.py +0 -35
  130. mirascope/api/_generated/core/serialization.py +0 -276
  131. mirascope/api/_generated/docs/__init__.py +0 -4
  132. mirascope/api/_generated/docs/client.py +0 -91
  133. mirascope/api/_generated/docs/raw_client.py +0 -178
  134. mirascope/api/_generated/environment.py +0 -9
  135. mirascope/api/_generated/environments/__init__.py +0 -23
  136. mirascope/api/_generated/environments/client.py +0 -649
  137. mirascope/api/_generated/environments/raw_client.py +0 -1567
  138. mirascope/api/_generated/environments/types/__init__.py +0 -25
  139. mirascope/api/_generated/environments/types/environments_create_response.py +0 -24
  140. mirascope/api/_generated/environments/types/environments_get_analytics_response.py +0 -60
  141. mirascope/api/_generated/environments/types/environments_get_analytics_response_top_functions_item.py +0 -24
  142. mirascope/api/_generated/environments/types/environments_get_analytics_response_top_models_item.py +0 -22
  143. mirascope/api/_generated/environments/types/environments_get_response.py +0 -24
  144. mirascope/api/_generated/environments/types/environments_list_response_item.py +0 -24
  145. mirascope/api/_generated/environments/types/environments_update_response.py +0 -24
  146. mirascope/api/_generated/errors/__init__.py +0 -25
  147. mirascope/api/_generated/errors/bad_request_error.py +0 -14
  148. mirascope/api/_generated/errors/conflict_error.py +0 -14
  149. mirascope/api/_generated/errors/forbidden_error.py +0 -11
  150. mirascope/api/_generated/errors/internal_server_error.py +0 -10
  151. mirascope/api/_generated/errors/not_found_error.py +0 -11
  152. mirascope/api/_generated/errors/payment_required_error.py +0 -15
  153. mirascope/api/_generated/errors/service_unavailable_error.py +0 -14
  154. mirascope/api/_generated/errors/too_many_requests_error.py +0 -15
  155. mirascope/api/_generated/errors/unauthorized_error.py +0 -11
  156. mirascope/api/_generated/functions/__init__.py +0 -39
  157. mirascope/api/_generated/functions/client.py +0 -647
  158. mirascope/api/_generated/functions/raw_client.py +0 -1890
  159. mirascope/api/_generated/functions/types/__init__.py +0 -53
  160. mirascope/api/_generated/functions/types/functions_create_request_dependencies_value.py +0 -20
  161. mirascope/api/_generated/functions/types/functions_create_response.py +0 -37
  162. mirascope/api/_generated/functions/types/functions_create_response_dependencies_value.py +0 -20
  163. mirascope/api/_generated/functions/types/functions_find_by_hash_response.py +0 -39
  164. mirascope/api/_generated/functions/types/functions_find_by_hash_response_dependencies_value.py +0 -20
  165. mirascope/api/_generated/functions/types/functions_get_by_env_response.py +0 -53
  166. mirascope/api/_generated/functions/types/functions_get_by_env_response_dependencies_value.py +0 -22
  167. mirascope/api/_generated/functions/types/functions_get_response.py +0 -37
  168. mirascope/api/_generated/functions/types/functions_get_response_dependencies_value.py +0 -20
  169. mirascope/api/_generated/functions/types/functions_list_by_env_response.py +0 -25
  170. mirascope/api/_generated/functions/types/functions_list_by_env_response_functions_item.py +0 -56
  171. mirascope/api/_generated/functions/types/functions_list_by_env_response_functions_item_dependencies_value.py +0 -22
  172. mirascope/api/_generated/functions/types/functions_list_response.py +0 -21
  173. mirascope/api/_generated/functions/types/functions_list_response_functions_item.py +0 -41
  174. mirascope/api/_generated/functions/types/functions_list_response_functions_item_dependencies_value.py +0 -20
  175. mirascope/api/_generated/health/__init__.py +0 -7
  176. mirascope/api/_generated/health/client.py +0 -92
  177. mirascope/api/_generated/health/raw_client.py +0 -175
  178. mirascope/api/_generated/health/types/__init__.py +0 -8
  179. mirascope/api/_generated/health/types/health_check_response.py +0 -22
  180. mirascope/api/_generated/health/types/health_check_response_status.py +0 -5
  181. mirascope/api/_generated/organization_invitations/__init__.py +0 -33
  182. mirascope/api/_generated/organization_invitations/client.py +0 -546
  183. mirascope/api/_generated/organization_invitations/raw_client.py +0 -1519
  184. mirascope/api/_generated/organization_invitations/types/__init__.py +0 -53
  185. mirascope/api/_generated/organization_invitations/types/organization_invitations_accept_response.py +0 -34
  186. mirascope/api/_generated/organization_invitations/types/organization_invitations_accept_response_role.py +0 -7
  187. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_request_role.py +0 -7
  188. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_response.py +0 -48
  189. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_response_role.py +0 -7
  190. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_response_status.py +0 -7
  191. mirascope/api/_generated/organization_invitations/types/organization_invitations_get_response.py +0 -48
  192. mirascope/api/_generated/organization_invitations/types/organization_invitations_get_response_role.py +0 -7
  193. mirascope/api/_generated/organization_invitations/types/organization_invitations_get_response_status.py +0 -7
  194. mirascope/api/_generated/organization_invitations/types/organization_invitations_list_response_item.py +0 -48
  195. mirascope/api/_generated/organization_invitations/types/organization_invitations_list_response_item_role.py +0 -7
  196. mirascope/api/_generated/organization_invitations/types/organization_invitations_list_response_item_status.py +0 -7
  197. mirascope/api/_generated/organization_memberships/__init__.py +0 -19
  198. mirascope/api/_generated/organization_memberships/client.py +0 -302
  199. mirascope/api/_generated/organization_memberships/raw_client.py +0 -736
  200. mirascope/api/_generated/organization_memberships/types/__init__.py +0 -27
  201. mirascope/api/_generated/organization_memberships/types/organization_memberships_list_response_item.py +0 -33
  202. mirascope/api/_generated/organization_memberships/types/organization_memberships_list_response_item_role.py +0 -7
  203. mirascope/api/_generated/organization_memberships/types/organization_memberships_update_request_role.py +0 -7
  204. mirascope/api/_generated/organization_memberships/types/organization_memberships_update_response.py +0 -31
  205. mirascope/api/_generated/organization_memberships/types/organization_memberships_update_response_role.py +0 -7
  206. mirascope/api/_generated/organizations/__init__.py +0 -51
  207. mirascope/api/_generated/organizations/client.py +0 -869
  208. mirascope/api/_generated/organizations/raw_client.py +0 -2593
  209. mirascope/api/_generated/organizations/types/__init__.py +0 -71
  210. mirascope/api/_generated/organizations/types/organizations_create_payment_intent_response.py +0 -24
  211. mirascope/api/_generated/organizations/types/organizations_create_response.py +0 -26
  212. mirascope/api/_generated/organizations/types/organizations_create_response_role.py +0 -5
  213. mirascope/api/_generated/organizations/types/organizations_get_response.py +0 -26
  214. mirascope/api/_generated/organizations/types/organizations_get_response_role.py +0 -5
  215. mirascope/api/_generated/organizations/types/organizations_list_response_item.py +0 -26
  216. mirascope/api/_generated/organizations/types/organizations_list_response_item_role.py +0 -5
  217. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_request_target_plan.py +0 -7
  218. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_response.py +0 -47
  219. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_response_validation_errors_item.py +0 -33
  220. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_response_validation_errors_item_resource.py +0 -7
  221. mirascope/api/_generated/organizations/types/organizations_router_balance_response.py +0 -24
  222. mirascope/api/_generated/organizations/types/organizations_subscription_response.py +0 -53
  223. mirascope/api/_generated/organizations/types/organizations_subscription_response_current_plan.py +0 -7
  224. mirascope/api/_generated/organizations/types/organizations_subscription_response_payment_method.py +0 -26
  225. mirascope/api/_generated/organizations/types/organizations_subscription_response_scheduled_change.py +0 -34
  226. mirascope/api/_generated/organizations/types/organizations_subscription_response_scheduled_change_target_plan.py +0 -7
  227. mirascope/api/_generated/organizations/types/organizations_update_response.py +0 -26
  228. mirascope/api/_generated/organizations/types/organizations_update_response_role.py +0 -5
  229. mirascope/api/_generated/organizations/types/organizations_update_subscription_request_target_plan.py +0 -7
  230. mirascope/api/_generated/organizations/types/organizations_update_subscription_response.py +0 -35
  231. mirascope/api/_generated/project_memberships/__init__.py +0 -25
  232. mirascope/api/_generated/project_memberships/client.py +0 -437
  233. mirascope/api/_generated/project_memberships/raw_client.py +0 -1039
  234. mirascope/api/_generated/project_memberships/types/__init__.py +0 -29
  235. mirascope/api/_generated/project_memberships/types/project_memberships_create_request_role.py +0 -7
  236. mirascope/api/_generated/project_memberships/types/project_memberships_create_response.py +0 -35
  237. mirascope/api/_generated/project_memberships/types/project_memberships_create_response_role.py +0 -7
  238. mirascope/api/_generated/project_memberships/types/project_memberships_list_response_item.py +0 -33
  239. mirascope/api/_generated/project_memberships/types/project_memberships_list_response_item_role.py +0 -7
  240. mirascope/api/_generated/project_memberships/types/project_memberships_update_request_role.py +0 -7
  241. mirascope/api/_generated/project_memberships/types/project_memberships_update_response.py +0 -35
  242. mirascope/api/_generated/project_memberships/types/project_memberships_update_response_role.py +0 -7
  243. mirascope/api/_generated/projects/__init__.py +0 -7
  244. mirascope/api/_generated/projects/client.py +0 -428
  245. mirascope/api/_generated/projects/raw_client.py +0 -1302
  246. mirascope/api/_generated/projects/types/__init__.py +0 -10
  247. mirascope/api/_generated/projects/types/projects_create_response.py +0 -25
  248. mirascope/api/_generated/projects/types/projects_get_response.py +0 -25
  249. mirascope/api/_generated/projects/types/projects_list_response_item.py +0 -25
  250. mirascope/api/_generated/projects/types/projects_update_response.py +0 -25
  251. mirascope/api/_generated/reference.md +0 -4915
  252. mirascope/api/_generated/tags/__init__.py +0 -19
  253. mirascope/api/_generated/tags/client.py +0 -504
  254. mirascope/api/_generated/tags/raw_client.py +0 -1288
  255. mirascope/api/_generated/tags/types/__init__.py +0 -17
  256. mirascope/api/_generated/tags/types/tags_create_response.py +0 -41
  257. mirascope/api/_generated/tags/types/tags_get_response.py +0 -41
  258. mirascope/api/_generated/tags/types/tags_list_response.py +0 -23
  259. mirascope/api/_generated/tags/types/tags_list_response_tags_item.py +0 -41
  260. mirascope/api/_generated/tags/types/tags_update_response.py +0 -41
  261. mirascope/api/_generated/token_cost/__init__.py +0 -7
  262. mirascope/api/_generated/token_cost/client.py +0 -160
  263. mirascope/api/_generated/token_cost/raw_client.py +0 -264
  264. mirascope/api/_generated/token_cost/types/__init__.py +0 -8
  265. mirascope/api/_generated/token_cost/types/token_cost_calculate_request_usage.py +0 -54
  266. mirascope/api/_generated/token_cost/types/token_cost_calculate_response.py +0 -52
  267. mirascope/api/_generated/traces/__init__.py +0 -97
  268. mirascope/api/_generated/traces/client.py +0 -1103
  269. mirascope/api/_generated/traces/raw_client.py +0 -2322
  270. mirascope/api/_generated/traces/types/__init__.py +0 -155
  271. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item.py +0 -29
  272. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource.py +0 -27
  273. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item.py +0 -23
  274. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value.py +0 -38
  275. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_array_value.py +0 -19
  276. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_kvlist_value.py +0 -22
  277. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_kvlist_value_values_item.py +0 -20
  278. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item.py +0 -29
  279. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope.py +0 -31
  280. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item.py +0 -23
  281. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value.py +0 -38
  282. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_array_value.py +0 -19
  283. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_kvlist_value.py +0 -22
  284. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_kvlist_value_values_item.py +0 -22
  285. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item.py +0 -48
  286. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item.py +0 -23
  287. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value.py +0 -38
  288. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_array_value.py +0 -19
  289. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_kvlist_value.py +0 -24
  290. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_kvlist_value_values_item.py +0 -22
  291. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_status.py +0 -20
  292. mirascope/api/_generated/traces/types/traces_create_response.py +0 -24
  293. mirascope/api/_generated/traces/types/traces_create_response_partial_success.py +0 -22
  294. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response.py +0 -60
  295. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response_top_functions_item.py +0 -24
  296. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response_top_models_item.py +0 -22
  297. mirascope/api/_generated/traces/types/traces_get_trace_detail_by_env_response.py +0 -33
  298. mirascope/api/_generated/traces/types/traces_get_trace_detail_by_env_response_spans_item.py +0 -88
  299. mirascope/api/_generated/traces/types/traces_get_trace_detail_response.py +0 -33
  300. mirascope/api/_generated/traces/types/traces_get_trace_detail_response_spans_item.py +0 -88
  301. mirascope/api/_generated/traces/types/traces_list_by_function_hash_response.py +0 -25
  302. mirascope/api/_generated/traces/types/traces_list_by_function_hash_response_traces_item.py +0 -44
  303. mirascope/api/_generated/traces/types/traces_search_by_env_request_attribute_filters_item.py +0 -26
  304. mirascope/api/_generated/traces/types/traces_search_by_env_request_attribute_filters_item_operator.py +0 -7
  305. mirascope/api/_generated/traces/types/traces_search_by_env_request_sort_by.py +0 -7
  306. mirascope/api/_generated/traces/types/traces_search_by_env_request_sort_order.py +0 -7
  307. mirascope/api/_generated/traces/types/traces_search_by_env_response.py +0 -26
  308. mirascope/api/_generated/traces/types/traces_search_by_env_response_spans_item.py +0 -50
  309. mirascope/api/_generated/traces/types/traces_search_request_attribute_filters_item.py +0 -26
  310. mirascope/api/_generated/traces/types/traces_search_request_attribute_filters_item_operator.py +0 -7
  311. mirascope/api/_generated/traces/types/traces_search_request_sort_by.py +0 -7
  312. mirascope/api/_generated/traces/types/traces_search_request_sort_order.py +0 -5
  313. mirascope/api/_generated/traces/types/traces_search_response.py +0 -26
  314. mirascope/api/_generated/traces/types/traces_search_response_spans_item.py +0 -50
  315. mirascope/api/_generated/types/__init__.py +0 -85
  316. mirascope/api/_generated/types/already_exists_error.py +0 -22
  317. mirascope/api/_generated/types/already_exists_error_tag.py +0 -5
  318. mirascope/api/_generated/types/bad_request_error_body.py +0 -50
  319. mirascope/api/_generated/types/click_house_error.py +0 -22
  320. mirascope/api/_generated/types/database_error.py +0 -22
  321. mirascope/api/_generated/types/database_error_tag.py +0 -5
  322. mirascope/api/_generated/types/date.py +0 -3
  323. mirascope/api/_generated/types/http_api_decode_error.py +0 -27
  324. mirascope/api/_generated/types/http_api_decode_error_tag.py +0 -5
  325. mirascope/api/_generated/types/immutable_resource_error.py +0 -22
  326. mirascope/api/_generated/types/internal_server_error_body.py +0 -49
  327. mirascope/api/_generated/types/issue.py +0 -38
  328. mirascope/api/_generated/types/issue_tag.py +0 -10
  329. mirascope/api/_generated/types/not_found_error_body.py +0 -22
  330. mirascope/api/_generated/types/not_found_error_tag.py +0 -5
  331. mirascope/api/_generated/types/number_from_string.py +0 -3
  332. mirascope/api/_generated/types/permission_denied_error.py +0 -22
  333. mirascope/api/_generated/types/permission_denied_error_tag.py +0 -5
  334. mirascope/api/_generated/types/plan_limit_exceeded_error.py +0 -32
  335. mirascope/api/_generated/types/plan_limit_exceeded_error_tag.py +0 -7
  336. mirascope/api/_generated/types/pricing_unavailable_error.py +0 -23
  337. mirascope/api/_generated/types/property_key.py +0 -7
  338. mirascope/api/_generated/types/property_key_key.py +0 -25
  339. mirascope/api/_generated/types/property_key_key_tag.py +0 -5
  340. mirascope/api/_generated/types/rate_limit_error.py +0 -31
  341. mirascope/api/_generated/types/rate_limit_error_tag.py +0 -5
  342. mirascope/api/_generated/types/service_unavailable_error_body.py +0 -24
  343. mirascope/api/_generated/types/service_unavailable_error_tag.py +0 -7
  344. mirascope/api/_generated/types/stripe_error.py +0 -20
  345. mirascope/api/_generated/types/subscription_past_due_error.py +0 -31
  346. mirascope/api/_generated/types/subscription_past_due_error_tag.py +0 -7
  347. mirascope/api/_generated/types/unauthorized_error_body.py +0 -21
  348. mirascope/api/_generated/types/unauthorized_error_tag.py +0 -5
  349. mirascope/api/client.py +0 -255
  350. mirascope/api/settings.py +0 -99
  351. mirascope/llm/formatting/output_parser.py +0 -178
  352. mirascope/llm/formatting/primitives.py +0 -192
  353. mirascope/llm/mcp/mcp_client.py +0 -130
  354. mirascope/llm/messages/_utils.py +0 -34
  355. mirascope/llm/models/thinking_config.py +0 -61
  356. mirascope/llm/prompts/prompts.py +0 -487
  357. mirascope/llm/providers/__init__.py +0 -62
  358. mirascope/llm/providers/anthropic/__init__.py +0 -11
  359. mirascope/llm/providers/anthropic/_utils/__init__.py +0 -27
  360. mirascope/llm/providers/anthropic/_utils/beta_decode.py +0 -282
  361. mirascope/llm/providers/anthropic/_utils/beta_encode.py +0 -266
  362. mirascope/llm/providers/anthropic/_utils/encode.py +0 -418
  363. mirascope/llm/providers/anthropic/_utils/errors.py +0 -46
  364. mirascope/llm/providers/anthropic/beta_provider.py +0 -374
  365. mirascope/llm/providers/anthropic/model_id.py +0 -23
  366. mirascope/llm/providers/anthropic/model_info.py +0 -87
  367. mirascope/llm/providers/anthropic/provider.py +0 -479
  368. mirascope/llm/providers/google/__init__.py +0 -6
  369. mirascope/llm/providers/google/_utils/errors.py +0 -50
  370. mirascope/llm/providers/google/model_id.py +0 -22
  371. mirascope/llm/providers/google/model_info.py +0 -63
  372. mirascope/llm/providers/google/provider.py +0 -492
  373. mirascope/llm/providers/mirascope/__init__.py +0 -5
  374. mirascope/llm/providers/mirascope/_utils.py +0 -73
  375. mirascope/llm/providers/mirascope/provider.py +0 -349
  376. mirascope/llm/providers/mlx/__init__.py +0 -9
  377. mirascope/llm/providers/mlx/_utils.py +0 -141
  378. mirascope/llm/providers/mlx/encoding/__init__.py +0 -8
  379. mirascope/llm/providers/mlx/encoding/base.py +0 -72
  380. mirascope/llm/providers/mlx/encoding/transformers.py +0 -150
  381. mirascope/llm/providers/mlx/mlx.py +0 -254
  382. mirascope/llm/providers/mlx/model_id.py +0 -17
  383. mirascope/llm/providers/mlx/provider.py +0 -452
  384. mirascope/llm/providers/model_id.py +0 -16
  385. mirascope/llm/providers/ollama/__init__.py +0 -7
  386. mirascope/llm/providers/ollama/provider.py +0 -71
  387. mirascope/llm/providers/openai/__init__.py +0 -15
  388. mirascope/llm/providers/openai/_utils/__init__.py +0 -5
  389. mirascope/llm/providers/openai/_utils/errors.py +0 -46
  390. mirascope/llm/providers/openai/completions/__init__.py +0 -7
  391. mirascope/llm/providers/openai/completions/base_provider.py +0 -542
  392. mirascope/llm/providers/openai/completions/provider.py +0 -22
  393. mirascope/llm/providers/openai/model_id.py +0 -31
  394. mirascope/llm/providers/openai/model_info.py +0 -303
  395. mirascope/llm/providers/openai/provider.py +0 -441
  396. mirascope/llm/providers/openai/responses/__init__.py +0 -5
  397. mirascope/llm/providers/openai/responses/provider.py +0 -513
  398. mirascope/llm/providers/provider_id.py +0 -24
  399. mirascope/llm/providers/provider_registry.py +0 -299
  400. mirascope/llm/providers/together/__init__.py +0 -7
  401. mirascope/llm/providers/together/provider.py +0 -40
  402. mirascope/llm/responses/usage.py +0 -95
  403. mirascope/ops/__init__.py +0 -111
  404. mirascope/ops/_internal/__init__.py +0 -5
  405. mirascope/ops/_internal/closure.py +0 -1169
  406. mirascope/ops/_internal/configuration.py +0 -177
  407. mirascope/ops/_internal/context.py +0 -76
  408. mirascope/ops/_internal/exporters/__init__.py +0 -26
  409. mirascope/ops/_internal/exporters/exporters.py +0 -395
  410. mirascope/ops/_internal/exporters/processors.py +0 -104
  411. mirascope/ops/_internal/exporters/types.py +0 -165
  412. mirascope/ops/_internal/exporters/utils.py +0 -29
  413. mirascope/ops/_internal/instrumentation/__init__.py +0 -8
  414. mirascope/ops/_internal/instrumentation/llm/__init__.py +0 -8
  415. mirascope/ops/_internal/instrumentation/llm/common.py +0 -530
  416. mirascope/ops/_internal/instrumentation/llm/cost.py +0 -190
  417. mirascope/ops/_internal/instrumentation/llm/encode.py +0 -238
  418. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/__init__.py +0 -38
  419. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/gen_ai_input_messages.py +0 -31
  420. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/gen_ai_output_messages.py +0 -38
  421. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/gen_ai_system_instructions.py +0 -18
  422. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/shared.py +0 -100
  423. mirascope/ops/_internal/instrumentation/llm/llm.py +0 -161
  424. mirascope/ops/_internal/instrumentation/llm/model.py +0 -1798
  425. mirascope/ops/_internal/instrumentation/llm/response.py +0 -521
  426. mirascope/ops/_internal/instrumentation/llm/serialize.py +0 -300
  427. mirascope/ops/_internal/propagation.py +0 -198
  428. mirascope/ops/_internal/protocols.py +0 -133
  429. mirascope/ops/_internal/session.py +0 -139
  430. mirascope/ops/_internal/spans.py +0 -232
  431. mirascope/ops/_internal/traced_calls.py +0 -375
  432. mirascope/ops/_internal/traced_functions.py +0 -523
  433. mirascope/ops/_internal/tracing.py +0 -353
  434. mirascope/ops/_internal/types.py +0 -13
  435. mirascope/ops/_internal/utils.py +0 -123
  436. mirascope/ops/_internal/versioned_calls.py +0 -512
  437. mirascope/ops/_internal/versioned_functions.py +0 -357
  438. mirascope/ops/_internal/versioning.py +0 -303
  439. mirascope/ops/exceptions.py +0 -21
  440. mirascope-2.0.0.dist-info/RECORD +0 -423
  441. /mirascope/llm/{providers → clients}/base/kwargs.py +0 -0
  442. /mirascope/llm/{providers → clients}/google/message.py +0 -0
@@ -1,2322 +0,0 @@
1
- # This file was auto-generated by Fern from our API Definition.
2
-
3
- import typing
4
- from json.decoder import JSONDecodeError
5
-
6
- from ..core.api_error import ApiError
7
- from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
8
- from ..core.http_response import AsyncHttpResponse, HttpResponse
9
- from ..core.jsonable_encoder import jsonable_encoder
10
- from ..core.pydantic_utilities import parse_obj_as
11
- from ..core.request_options import RequestOptions
12
- from ..core.serialization import convert_and_respect_annotation_metadata
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.payment_required_error import PaymentRequiredError
19
- from ..errors.service_unavailable_error import ServiceUnavailableError
20
- from ..errors.too_many_requests_error import TooManyRequestsError
21
- from ..errors.unauthorized_error import UnauthorizedError
22
- from ..types.not_found_error_body import NotFoundErrorBody
23
- from ..types.number_from_string import NumberFromString
24
- from ..types.permission_denied_error import PermissionDeniedError
25
- from ..types.plan_limit_exceeded_error import PlanLimitExceededError
26
- from ..types.rate_limit_error import RateLimitError
27
- from ..types.unauthorized_error_body import UnauthorizedErrorBody
28
- from .types.traces_create_request_resource_spans_item import (
29
- TracesCreateRequestResourceSpansItem,
30
- )
31
- from .types.traces_create_response import TracesCreateResponse
32
- from .types.traces_get_analytics_summary_response import (
33
- TracesGetAnalyticsSummaryResponse,
34
- )
35
- from .types.traces_get_trace_detail_by_env_response import (
36
- TracesGetTraceDetailByEnvResponse,
37
- )
38
- from .types.traces_get_trace_detail_response import TracesGetTraceDetailResponse
39
- from .types.traces_list_by_function_hash_response import (
40
- TracesListByFunctionHashResponse,
41
- )
42
- from .types.traces_search_by_env_request_attribute_filters_item import (
43
- TracesSearchByEnvRequestAttributeFiltersItem,
44
- )
45
- from .types.traces_search_by_env_request_sort_by import TracesSearchByEnvRequestSortBy
46
- from .types.traces_search_by_env_request_sort_order import (
47
- TracesSearchByEnvRequestSortOrder,
48
- )
49
- from .types.traces_search_by_env_response import TracesSearchByEnvResponse
50
- from .types.traces_search_request_attribute_filters_item import (
51
- TracesSearchRequestAttributeFiltersItem,
52
- )
53
- from .types.traces_search_request_sort_by import TracesSearchRequestSortBy
54
- from .types.traces_search_request_sort_order import TracesSearchRequestSortOrder
55
- from .types.traces_search_response import TracesSearchResponse
56
-
57
- # this is used as the default value for optional parameters
58
- OMIT = typing.cast(typing.Any, ...)
59
-
60
-
61
- class RawTracesClient:
62
- def __init__(self, *, client_wrapper: SyncClientWrapper):
63
- self._client_wrapper = client_wrapper
64
-
65
- def create(
66
- self,
67
- *,
68
- resource_spans: typing.Sequence[TracesCreateRequestResourceSpansItem],
69
- request_options: typing.Optional[RequestOptions] = None,
70
- ) -> HttpResponse[TracesCreateResponse]:
71
- """
72
- Parameters
73
- ----------
74
- resource_spans : typing.Sequence[TracesCreateRequestResourceSpansItem]
75
-
76
- request_options : typing.Optional[RequestOptions]
77
- Request-specific configuration.
78
-
79
- Returns
80
- -------
81
- HttpResponse[TracesCreateResponse]
82
- Success
83
- """
84
- _response = self._client_wrapper.httpx_client.request(
85
- "traces",
86
- method="POST",
87
- json={
88
- "resourceSpans": convert_and_respect_annotation_metadata(
89
- object_=resource_spans,
90
- annotation=typing.Sequence[TracesCreateRequestResourceSpansItem],
91
- direction="write",
92
- ),
93
- },
94
- headers={
95
- "content-type": "application/json",
96
- },
97
- request_options=request_options,
98
- omit=OMIT,
99
- )
100
- try:
101
- if 200 <= _response.status_code < 300:
102
- _data = typing.cast(
103
- TracesCreateResponse,
104
- parse_obj_as(
105
- type_=TracesCreateResponse, # type: ignore
106
- object_=_response.json(),
107
- ),
108
- )
109
- return HttpResponse(response=_response, data=_data)
110
- if _response.status_code == 400:
111
- raise BadRequestError(
112
- headers=dict(_response.headers),
113
- body=typing.cast(
114
- typing.Optional[typing.Any],
115
- parse_obj_as(
116
- type_=typing.Optional[typing.Any], # type: ignore
117
- object_=_response.json(),
118
- ),
119
- ),
120
- )
121
- if _response.status_code == 401:
122
- raise UnauthorizedError(
123
- headers=dict(_response.headers),
124
- body=typing.cast(
125
- UnauthorizedErrorBody,
126
- parse_obj_as(
127
- type_=UnauthorizedErrorBody, # type: ignore
128
- object_=_response.json(),
129
- ),
130
- ),
131
- )
132
- if _response.status_code == 402:
133
- raise PaymentRequiredError(
134
- headers=dict(_response.headers),
135
- body=typing.cast(
136
- PlanLimitExceededError,
137
- parse_obj_as(
138
- type_=PlanLimitExceededError, # type: ignore
139
- object_=_response.json(),
140
- ),
141
- ),
142
- )
143
- if _response.status_code == 403:
144
- raise ForbiddenError(
145
- headers=dict(_response.headers),
146
- body=typing.cast(
147
- PermissionDeniedError,
148
- parse_obj_as(
149
- type_=PermissionDeniedError, # type: ignore
150
- object_=_response.json(),
151
- ),
152
- ),
153
- )
154
- if _response.status_code == 404:
155
- raise NotFoundError(
156
- headers=dict(_response.headers),
157
- body=typing.cast(
158
- NotFoundErrorBody,
159
- parse_obj_as(
160
- type_=NotFoundErrorBody, # type: ignore
161
- object_=_response.json(),
162
- ),
163
- ),
164
- )
165
- if _response.status_code == 409:
166
- raise ConflictError(
167
- headers=dict(_response.headers),
168
- body=typing.cast(
169
- typing.Optional[typing.Any],
170
- parse_obj_as(
171
- type_=typing.Optional[typing.Any], # type: ignore
172
- object_=_response.json(),
173
- ),
174
- ),
175
- )
176
- if _response.status_code == 429:
177
- raise TooManyRequestsError(
178
- headers=dict(_response.headers),
179
- body=typing.cast(
180
- RateLimitError,
181
- parse_obj_as(
182
- type_=RateLimitError, # type: ignore
183
- object_=_response.json(),
184
- ),
185
- ),
186
- )
187
- if _response.status_code == 500:
188
- raise InternalServerError(
189
- headers=dict(_response.headers),
190
- body=typing.cast(
191
- typing.Optional[typing.Any],
192
- parse_obj_as(
193
- type_=typing.Optional[typing.Any], # type: ignore
194
- object_=_response.json(),
195
- ),
196
- ),
197
- )
198
- if _response.status_code == 503:
199
- raise ServiceUnavailableError(
200
- headers=dict(_response.headers),
201
- body=typing.cast(
202
- typing.Optional[typing.Any],
203
- parse_obj_as(
204
- type_=typing.Optional[typing.Any], # type: ignore
205
- object_=_response.json(),
206
- ),
207
- ),
208
- )
209
- _response_json = _response.json()
210
- except JSONDecodeError:
211
- raise ApiError(
212
- status_code=_response.status_code,
213
- headers=dict(_response.headers),
214
- body=_response.text,
215
- )
216
- raise ApiError(
217
- status_code=_response.status_code,
218
- headers=dict(_response.headers),
219
- body=_response_json,
220
- )
221
-
222
- def search(
223
- self,
224
- *,
225
- start_time: str,
226
- end_time: str,
227
- query: typing.Optional[str] = OMIT,
228
- input_messages_query: typing.Optional[str] = OMIT,
229
- output_messages_query: typing.Optional[str] = OMIT,
230
- fuzzy_search: typing.Optional[bool] = OMIT,
231
- trace_id: typing.Optional[str] = OMIT,
232
- span_id: typing.Optional[str] = OMIT,
233
- model: typing.Optional[typing.Sequence[str]] = OMIT,
234
- provider: typing.Optional[typing.Sequence[str]] = OMIT,
235
- function_id: typing.Optional[str] = OMIT,
236
- function_name: typing.Optional[str] = OMIT,
237
- span_name_prefix: typing.Optional[str] = OMIT,
238
- has_error: typing.Optional[bool] = OMIT,
239
- min_tokens: typing.Optional[float] = OMIT,
240
- max_tokens: typing.Optional[float] = OMIT,
241
- min_duration: typing.Optional[float] = OMIT,
242
- max_duration: typing.Optional[float] = OMIT,
243
- attribute_filters: typing.Optional[
244
- typing.Sequence[TracesSearchRequestAttributeFiltersItem]
245
- ] = OMIT,
246
- limit: typing.Optional[float] = OMIT,
247
- offset: typing.Optional[float] = OMIT,
248
- sort_by: typing.Optional[TracesSearchRequestSortBy] = OMIT,
249
- sort_order: typing.Optional[TracesSearchRequestSortOrder] = OMIT,
250
- root_spans_only: typing.Optional[bool] = OMIT,
251
- request_options: typing.Optional[RequestOptions] = None,
252
- ) -> HttpResponse[TracesSearchResponse]:
253
- """
254
- Parameters
255
- ----------
256
- start_time : str
257
-
258
- end_time : str
259
-
260
- query : typing.Optional[str]
261
-
262
- input_messages_query : typing.Optional[str]
263
-
264
- output_messages_query : typing.Optional[str]
265
-
266
- fuzzy_search : typing.Optional[bool]
267
-
268
- trace_id : typing.Optional[str]
269
-
270
- span_id : typing.Optional[str]
271
-
272
- model : typing.Optional[typing.Sequence[str]]
273
-
274
- provider : typing.Optional[typing.Sequence[str]]
275
-
276
- function_id : typing.Optional[str]
277
-
278
- function_name : typing.Optional[str]
279
-
280
- span_name_prefix : typing.Optional[str]
281
-
282
- has_error : typing.Optional[bool]
283
-
284
- min_tokens : typing.Optional[float]
285
-
286
- max_tokens : typing.Optional[float]
287
-
288
- min_duration : typing.Optional[float]
289
-
290
- max_duration : typing.Optional[float]
291
-
292
- attribute_filters : typing.Optional[typing.Sequence[TracesSearchRequestAttributeFiltersItem]]
293
-
294
- limit : typing.Optional[float]
295
-
296
- offset : typing.Optional[float]
297
-
298
- sort_by : typing.Optional[TracesSearchRequestSortBy]
299
-
300
- sort_order : typing.Optional[TracesSearchRequestSortOrder]
301
-
302
- root_spans_only : typing.Optional[bool]
303
-
304
- request_options : typing.Optional[RequestOptions]
305
- Request-specific configuration.
306
-
307
- Returns
308
- -------
309
- HttpResponse[TracesSearchResponse]
310
- Success
311
- """
312
- _response = self._client_wrapper.httpx_client.request(
313
- "traces/search",
314
- method="POST",
315
- json={
316
- "startTime": start_time,
317
- "endTime": end_time,
318
- "query": query,
319
- "inputMessagesQuery": input_messages_query,
320
- "outputMessagesQuery": output_messages_query,
321
- "fuzzySearch": fuzzy_search,
322
- "traceId": trace_id,
323
- "spanId": span_id,
324
- "model": model,
325
- "provider": provider,
326
- "functionId": function_id,
327
- "functionName": function_name,
328
- "spanNamePrefix": span_name_prefix,
329
- "hasError": has_error,
330
- "minTokens": min_tokens,
331
- "maxTokens": max_tokens,
332
- "minDuration": min_duration,
333
- "maxDuration": max_duration,
334
- "attributeFilters": convert_and_respect_annotation_metadata(
335
- object_=attribute_filters,
336
- annotation=typing.Sequence[TracesSearchRequestAttributeFiltersItem],
337
- direction="write",
338
- ),
339
- "limit": limit,
340
- "offset": offset,
341
- "sortBy": sort_by,
342
- "sortOrder": sort_order,
343
- "rootSpansOnly": root_spans_only,
344
- },
345
- headers={
346
- "content-type": "application/json",
347
- },
348
- request_options=request_options,
349
- omit=OMIT,
350
- )
351
- try:
352
- if 200 <= _response.status_code < 300:
353
- _data = typing.cast(
354
- TracesSearchResponse,
355
- parse_obj_as(
356
- type_=TracesSearchResponse, # type: ignore
357
- object_=_response.json(),
358
- ),
359
- )
360
- return HttpResponse(response=_response, data=_data)
361
- if _response.status_code == 400:
362
- raise BadRequestError(
363
- headers=dict(_response.headers),
364
- body=typing.cast(
365
- typing.Optional[typing.Any],
366
- parse_obj_as(
367
- type_=typing.Optional[typing.Any], # type: ignore
368
- object_=_response.json(),
369
- ),
370
- ),
371
- )
372
- if _response.status_code == 401:
373
- raise UnauthorizedError(
374
- headers=dict(_response.headers),
375
- body=typing.cast(
376
- UnauthorizedErrorBody,
377
- parse_obj_as(
378
- type_=UnauthorizedErrorBody, # type: ignore
379
- object_=_response.json(),
380
- ),
381
- ),
382
- )
383
- if _response.status_code == 403:
384
- raise ForbiddenError(
385
- headers=dict(_response.headers),
386
- body=typing.cast(
387
- PermissionDeniedError,
388
- parse_obj_as(
389
- type_=PermissionDeniedError, # type: ignore
390
- object_=_response.json(),
391
- ),
392
- ),
393
- )
394
- if _response.status_code == 429:
395
- raise TooManyRequestsError(
396
- headers=dict(_response.headers),
397
- body=typing.cast(
398
- RateLimitError,
399
- parse_obj_as(
400
- type_=RateLimitError, # type: ignore
401
- object_=_response.json(),
402
- ),
403
- ),
404
- )
405
- if _response.status_code == 500:
406
- raise InternalServerError(
407
- headers=dict(_response.headers),
408
- body=typing.cast(
409
- typing.Optional[typing.Any],
410
- parse_obj_as(
411
- type_=typing.Optional[typing.Any], # type: ignore
412
- object_=_response.json(),
413
- ),
414
- ),
415
- )
416
- if _response.status_code == 503:
417
- raise ServiceUnavailableError(
418
- headers=dict(_response.headers),
419
- body=typing.cast(
420
- typing.Optional[typing.Any],
421
- parse_obj_as(
422
- type_=typing.Optional[typing.Any], # type: ignore
423
- object_=_response.json(),
424
- ),
425
- ),
426
- )
427
- _response_json = _response.json()
428
- except JSONDecodeError:
429
- raise ApiError(
430
- status_code=_response.status_code,
431
- headers=dict(_response.headers),
432
- body=_response.text,
433
- )
434
- raise ApiError(
435
- status_code=_response.status_code,
436
- headers=dict(_response.headers),
437
- body=_response_json,
438
- )
439
-
440
- def gettracedetail(
441
- self, trace_id: str, *, request_options: typing.Optional[RequestOptions] = None
442
- ) -> HttpResponse[TracesGetTraceDetailResponse]:
443
- """
444
- Parameters
445
- ----------
446
- trace_id : str
447
-
448
- request_options : typing.Optional[RequestOptions]
449
- Request-specific configuration.
450
-
451
- Returns
452
- -------
453
- HttpResponse[TracesGetTraceDetailResponse]
454
- Success
455
- """
456
- _response = self._client_wrapper.httpx_client.request(
457
- f"traces/{jsonable_encoder(trace_id)}",
458
- method="GET",
459
- request_options=request_options,
460
- )
461
- try:
462
- if 200 <= _response.status_code < 300:
463
- _data = typing.cast(
464
- TracesGetTraceDetailResponse,
465
- parse_obj_as(
466
- type_=TracesGetTraceDetailResponse, # type: ignore
467
- object_=_response.json(),
468
- ),
469
- )
470
- return HttpResponse(response=_response, data=_data)
471
- if _response.status_code == 400:
472
- raise BadRequestError(
473
- headers=dict(_response.headers),
474
- body=typing.cast(
475
- typing.Optional[typing.Any],
476
- parse_obj_as(
477
- type_=typing.Optional[typing.Any], # type: ignore
478
- object_=_response.json(),
479
- ),
480
- ),
481
- )
482
- if _response.status_code == 401:
483
- raise UnauthorizedError(
484
- headers=dict(_response.headers),
485
- body=typing.cast(
486
- UnauthorizedErrorBody,
487
- parse_obj_as(
488
- type_=UnauthorizedErrorBody, # type: ignore
489
- object_=_response.json(),
490
- ),
491
- ),
492
- )
493
- if _response.status_code == 403:
494
- raise ForbiddenError(
495
- headers=dict(_response.headers),
496
- body=typing.cast(
497
- PermissionDeniedError,
498
- parse_obj_as(
499
- type_=PermissionDeniedError, # type: ignore
500
- object_=_response.json(),
501
- ),
502
- ),
503
- )
504
- if _response.status_code == 404:
505
- raise NotFoundError(
506
- headers=dict(_response.headers),
507
- body=typing.cast(
508
- NotFoundErrorBody,
509
- parse_obj_as(
510
- type_=NotFoundErrorBody, # type: ignore
511
- object_=_response.json(),
512
- ),
513
- ),
514
- )
515
- if _response.status_code == 429:
516
- raise TooManyRequestsError(
517
- headers=dict(_response.headers),
518
- body=typing.cast(
519
- RateLimitError,
520
- parse_obj_as(
521
- type_=RateLimitError, # type: ignore
522
- object_=_response.json(),
523
- ),
524
- ),
525
- )
526
- if _response.status_code == 500:
527
- raise InternalServerError(
528
- headers=dict(_response.headers),
529
- body=typing.cast(
530
- typing.Optional[typing.Any],
531
- parse_obj_as(
532
- type_=typing.Optional[typing.Any], # type: ignore
533
- object_=_response.json(),
534
- ),
535
- ),
536
- )
537
- if _response.status_code == 503:
538
- raise ServiceUnavailableError(
539
- headers=dict(_response.headers),
540
- body=typing.cast(
541
- typing.Optional[typing.Any],
542
- parse_obj_as(
543
- type_=typing.Optional[typing.Any], # type: ignore
544
- object_=_response.json(),
545
- ),
546
- ),
547
- )
548
- _response_json = _response.json()
549
- except JSONDecodeError:
550
- raise ApiError(
551
- status_code=_response.status_code,
552
- headers=dict(_response.headers),
553
- body=_response.text,
554
- )
555
- raise ApiError(
556
- status_code=_response.status_code,
557
- headers=dict(_response.headers),
558
- body=_response_json,
559
- )
560
-
561
- def getanalyticssummary(
562
- self,
563
- *,
564
- start_time: str,
565
- end_time: str,
566
- function_id: typing.Optional[str] = None,
567
- request_options: typing.Optional[RequestOptions] = None,
568
- ) -> HttpResponse[TracesGetAnalyticsSummaryResponse]:
569
- """
570
- Parameters
571
- ----------
572
- start_time : str
573
-
574
- end_time : str
575
-
576
- function_id : typing.Optional[str]
577
-
578
- request_options : typing.Optional[RequestOptions]
579
- Request-specific configuration.
580
-
581
- Returns
582
- -------
583
- HttpResponse[TracesGetAnalyticsSummaryResponse]
584
- Success
585
- """
586
- _response = self._client_wrapper.httpx_client.request(
587
- "traces/analytics",
588
- method="GET",
589
- params={
590
- "startTime": start_time,
591
- "endTime": end_time,
592
- "functionId": function_id,
593
- },
594
- request_options=request_options,
595
- )
596
- try:
597
- if 200 <= _response.status_code < 300:
598
- _data = typing.cast(
599
- TracesGetAnalyticsSummaryResponse,
600
- parse_obj_as(
601
- type_=TracesGetAnalyticsSummaryResponse, # type: ignore
602
- object_=_response.json(),
603
- ),
604
- )
605
- return HttpResponse(response=_response, data=_data)
606
- if _response.status_code == 400:
607
- raise BadRequestError(
608
- headers=dict(_response.headers),
609
- body=typing.cast(
610
- typing.Optional[typing.Any],
611
- parse_obj_as(
612
- type_=typing.Optional[typing.Any], # type: ignore
613
- object_=_response.json(),
614
- ),
615
- ),
616
- )
617
- if _response.status_code == 401:
618
- raise UnauthorizedError(
619
- headers=dict(_response.headers),
620
- body=typing.cast(
621
- UnauthorizedErrorBody,
622
- parse_obj_as(
623
- type_=UnauthorizedErrorBody, # type: ignore
624
- object_=_response.json(),
625
- ),
626
- ),
627
- )
628
- if _response.status_code == 403:
629
- raise ForbiddenError(
630
- headers=dict(_response.headers),
631
- body=typing.cast(
632
- PermissionDeniedError,
633
- parse_obj_as(
634
- type_=PermissionDeniedError, # type: ignore
635
- object_=_response.json(),
636
- ),
637
- ),
638
- )
639
- if _response.status_code == 429:
640
- raise TooManyRequestsError(
641
- headers=dict(_response.headers),
642
- body=typing.cast(
643
- RateLimitError,
644
- parse_obj_as(
645
- type_=RateLimitError, # type: ignore
646
- object_=_response.json(),
647
- ),
648
- ),
649
- )
650
- if _response.status_code == 500:
651
- raise InternalServerError(
652
- headers=dict(_response.headers),
653
- body=typing.cast(
654
- typing.Optional[typing.Any],
655
- parse_obj_as(
656
- type_=typing.Optional[typing.Any], # type: ignore
657
- object_=_response.json(),
658
- ),
659
- ),
660
- )
661
- if _response.status_code == 503:
662
- raise ServiceUnavailableError(
663
- headers=dict(_response.headers),
664
- body=typing.cast(
665
- typing.Optional[typing.Any],
666
- parse_obj_as(
667
- type_=typing.Optional[typing.Any], # type: ignore
668
- object_=_response.json(),
669
- ),
670
- ),
671
- )
672
- _response_json = _response.json()
673
- except JSONDecodeError:
674
- raise ApiError(
675
- status_code=_response.status_code,
676
- headers=dict(_response.headers),
677
- body=_response.text,
678
- )
679
- raise ApiError(
680
- status_code=_response.status_code,
681
- headers=dict(_response.headers),
682
- body=_response_json,
683
- )
684
-
685
- def listbyfunctionhash(
686
- self,
687
- hash: str,
688
- *,
689
- limit: typing.Optional[NumberFromString] = None,
690
- offset: typing.Optional[NumberFromString] = None,
691
- request_options: typing.Optional[RequestOptions] = None,
692
- ) -> HttpResponse[TracesListByFunctionHashResponse]:
693
- """
694
- Parameters
695
- ----------
696
- hash : str
697
-
698
- limit : typing.Optional[NumberFromString]
699
-
700
- offset : typing.Optional[NumberFromString]
701
-
702
- request_options : typing.Optional[RequestOptions]
703
- Request-specific configuration.
704
-
705
- Returns
706
- -------
707
- HttpResponse[TracesListByFunctionHashResponse]
708
- Success
709
- """
710
- _response = self._client_wrapper.httpx_client.request(
711
- f"traces/function/hash/{jsonable_encoder(hash)}",
712
- method="GET",
713
- params={
714
- "limit": limit,
715
- "offset": offset,
716
- },
717
- request_options=request_options,
718
- )
719
- try:
720
- if 200 <= _response.status_code < 300:
721
- _data = typing.cast(
722
- TracesListByFunctionHashResponse,
723
- parse_obj_as(
724
- type_=TracesListByFunctionHashResponse, # type: ignore
725
- object_=_response.json(),
726
- ),
727
- )
728
- return HttpResponse(response=_response, data=_data)
729
- if _response.status_code == 400:
730
- raise BadRequestError(
731
- headers=dict(_response.headers),
732
- body=typing.cast(
733
- typing.Optional[typing.Any],
734
- parse_obj_as(
735
- type_=typing.Optional[typing.Any], # type: ignore
736
- object_=_response.json(),
737
- ),
738
- ),
739
- )
740
- if _response.status_code == 401:
741
- raise UnauthorizedError(
742
- headers=dict(_response.headers),
743
- body=typing.cast(
744
- UnauthorizedErrorBody,
745
- parse_obj_as(
746
- type_=UnauthorizedErrorBody, # type: ignore
747
- object_=_response.json(),
748
- ),
749
- ),
750
- )
751
- if _response.status_code == 403:
752
- raise ForbiddenError(
753
- headers=dict(_response.headers),
754
- body=typing.cast(
755
- PermissionDeniedError,
756
- parse_obj_as(
757
- type_=PermissionDeniedError, # type: ignore
758
- object_=_response.json(),
759
- ),
760
- ),
761
- )
762
- if _response.status_code == 404:
763
- raise NotFoundError(
764
- headers=dict(_response.headers),
765
- body=typing.cast(
766
- NotFoundErrorBody,
767
- parse_obj_as(
768
- type_=NotFoundErrorBody, # type: ignore
769
- object_=_response.json(),
770
- ),
771
- ),
772
- )
773
- if _response.status_code == 429:
774
- raise TooManyRequestsError(
775
- headers=dict(_response.headers),
776
- body=typing.cast(
777
- RateLimitError,
778
- parse_obj_as(
779
- type_=RateLimitError, # type: ignore
780
- object_=_response.json(),
781
- ),
782
- ),
783
- )
784
- if _response.status_code == 500:
785
- raise InternalServerError(
786
- headers=dict(_response.headers),
787
- body=typing.cast(
788
- typing.Optional[typing.Any],
789
- parse_obj_as(
790
- type_=typing.Optional[typing.Any], # type: ignore
791
- object_=_response.json(),
792
- ),
793
- ),
794
- )
795
- if _response.status_code == 503:
796
- raise ServiceUnavailableError(
797
- headers=dict(_response.headers),
798
- body=typing.cast(
799
- typing.Optional[typing.Any],
800
- parse_obj_as(
801
- type_=typing.Optional[typing.Any], # type: ignore
802
- object_=_response.json(),
803
- ),
804
- ),
805
- )
806
- _response_json = _response.json()
807
- except JSONDecodeError:
808
- raise ApiError(
809
- status_code=_response.status_code,
810
- headers=dict(_response.headers),
811
- body=_response.text,
812
- )
813
- raise ApiError(
814
- status_code=_response.status_code,
815
- headers=dict(_response.headers),
816
- body=_response_json,
817
- )
818
-
819
- def searchbyenv(
820
- self,
821
- organization_id: str,
822
- project_id: str,
823
- environment_id: str,
824
- *,
825
- start_time: str,
826
- end_time: str,
827
- query: typing.Optional[str] = OMIT,
828
- input_messages_query: typing.Optional[str] = OMIT,
829
- output_messages_query: typing.Optional[str] = OMIT,
830
- fuzzy_search: typing.Optional[bool] = OMIT,
831
- trace_id: typing.Optional[str] = OMIT,
832
- span_id: typing.Optional[str] = OMIT,
833
- model: typing.Optional[typing.Sequence[str]] = OMIT,
834
- provider: typing.Optional[typing.Sequence[str]] = OMIT,
835
- function_id: typing.Optional[str] = OMIT,
836
- function_name: typing.Optional[str] = OMIT,
837
- span_name_prefix: typing.Optional[str] = OMIT,
838
- has_error: typing.Optional[bool] = OMIT,
839
- min_tokens: typing.Optional[float] = OMIT,
840
- max_tokens: typing.Optional[float] = OMIT,
841
- min_duration: typing.Optional[float] = OMIT,
842
- max_duration: typing.Optional[float] = OMIT,
843
- attribute_filters: typing.Optional[
844
- typing.Sequence[TracesSearchByEnvRequestAttributeFiltersItem]
845
- ] = OMIT,
846
- limit: typing.Optional[float] = OMIT,
847
- offset: typing.Optional[float] = OMIT,
848
- sort_by: typing.Optional[TracesSearchByEnvRequestSortBy] = OMIT,
849
- sort_order: typing.Optional[TracesSearchByEnvRequestSortOrder] = OMIT,
850
- root_spans_only: typing.Optional[bool] = OMIT,
851
- request_options: typing.Optional[RequestOptions] = None,
852
- ) -> HttpResponse[TracesSearchByEnvResponse]:
853
- """
854
- Parameters
855
- ----------
856
- organization_id : str
857
-
858
- project_id : str
859
-
860
- environment_id : str
861
-
862
- start_time : str
863
-
864
- end_time : str
865
-
866
- query : typing.Optional[str]
867
-
868
- input_messages_query : typing.Optional[str]
869
-
870
- output_messages_query : typing.Optional[str]
871
-
872
- fuzzy_search : typing.Optional[bool]
873
-
874
- trace_id : typing.Optional[str]
875
-
876
- span_id : typing.Optional[str]
877
-
878
- model : typing.Optional[typing.Sequence[str]]
879
-
880
- provider : typing.Optional[typing.Sequence[str]]
881
-
882
- function_id : typing.Optional[str]
883
-
884
- function_name : typing.Optional[str]
885
-
886
- span_name_prefix : typing.Optional[str]
887
-
888
- has_error : typing.Optional[bool]
889
-
890
- min_tokens : typing.Optional[float]
891
-
892
- max_tokens : typing.Optional[float]
893
-
894
- min_duration : typing.Optional[float]
895
-
896
- max_duration : typing.Optional[float]
897
-
898
- attribute_filters : typing.Optional[typing.Sequence[TracesSearchByEnvRequestAttributeFiltersItem]]
899
-
900
- limit : typing.Optional[float]
901
-
902
- offset : typing.Optional[float]
903
-
904
- sort_by : typing.Optional[TracesSearchByEnvRequestSortBy]
905
-
906
- sort_order : typing.Optional[TracesSearchByEnvRequestSortOrder]
907
-
908
- root_spans_only : typing.Optional[bool]
909
-
910
- request_options : typing.Optional[RequestOptions]
911
- Request-specific configuration.
912
-
913
- Returns
914
- -------
915
- HttpResponse[TracesSearchByEnvResponse]
916
- Success
917
- """
918
- _response = self._client_wrapper.httpx_client.request(
919
- f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/environments/{jsonable_encoder(environment_id)}/traces/search",
920
- method="POST",
921
- json={
922
- "startTime": start_time,
923
- "endTime": end_time,
924
- "query": query,
925
- "inputMessagesQuery": input_messages_query,
926
- "outputMessagesQuery": output_messages_query,
927
- "fuzzySearch": fuzzy_search,
928
- "traceId": trace_id,
929
- "spanId": span_id,
930
- "model": model,
931
- "provider": provider,
932
- "functionId": function_id,
933
- "functionName": function_name,
934
- "spanNamePrefix": span_name_prefix,
935
- "hasError": has_error,
936
- "minTokens": min_tokens,
937
- "maxTokens": max_tokens,
938
- "minDuration": min_duration,
939
- "maxDuration": max_duration,
940
- "attributeFilters": convert_and_respect_annotation_metadata(
941
- object_=attribute_filters,
942
- annotation=typing.Sequence[
943
- TracesSearchByEnvRequestAttributeFiltersItem
944
- ],
945
- direction="write",
946
- ),
947
- "limit": limit,
948
- "offset": offset,
949
- "sortBy": sort_by,
950
- "sortOrder": sort_order,
951
- "rootSpansOnly": root_spans_only,
952
- },
953
- headers={
954
- "content-type": "application/json",
955
- },
956
- request_options=request_options,
957
- omit=OMIT,
958
- )
959
- try:
960
- if 200 <= _response.status_code < 300:
961
- _data = typing.cast(
962
- TracesSearchByEnvResponse,
963
- parse_obj_as(
964
- type_=TracesSearchByEnvResponse, # type: ignore
965
- object_=_response.json(),
966
- ),
967
- )
968
- return HttpResponse(response=_response, data=_data)
969
- if _response.status_code == 400:
970
- raise BadRequestError(
971
- headers=dict(_response.headers),
972
- body=typing.cast(
973
- typing.Optional[typing.Any],
974
- parse_obj_as(
975
- type_=typing.Optional[typing.Any], # type: ignore
976
- object_=_response.json(),
977
- ),
978
- ),
979
- )
980
- if _response.status_code == 401:
981
- raise UnauthorizedError(
982
- headers=dict(_response.headers),
983
- body=typing.cast(
984
- UnauthorizedErrorBody,
985
- parse_obj_as(
986
- type_=UnauthorizedErrorBody, # type: ignore
987
- object_=_response.json(),
988
- ),
989
- ),
990
- )
991
- if _response.status_code == 403:
992
- raise ForbiddenError(
993
- headers=dict(_response.headers),
994
- body=typing.cast(
995
- PermissionDeniedError,
996
- parse_obj_as(
997
- type_=PermissionDeniedError, # type: ignore
998
- object_=_response.json(),
999
- ),
1000
- ),
1001
- )
1002
- if _response.status_code == 404:
1003
- raise NotFoundError(
1004
- headers=dict(_response.headers),
1005
- body=typing.cast(
1006
- NotFoundErrorBody,
1007
- parse_obj_as(
1008
- type_=NotFoundErrorBody, # type: ignore
1009
- object_=_response.json(),
1010
- ),
1011
- ),
1012
- )
1013
- if _response.status_code == 429:
1014
- raise TooManyRequestsError(
1015
- headers=dict(_response.headers),
1016
- body=typing.cast(
1017
- RateLimitError,
1018
- parse_obj_as(
1019
- type_=RateLimitError, # type: ignore
1020
- object_=_response.json(),
1021
- ),
1022
- ),
1023
- )
1024
- if _response.status_code == 500:
1025
- raise InternalServerError(
1026
- headers=dict(_response.headers),
1027
- body=typing.cast(
1028
- typing.Optional[typing.Any],
1029
- parse_obj_as(
1030
- type_=typing.Optional[typing.Any], # type: ignore
1031
- object_=_response.json(),
1032
- ),
1033
- ),
1034
- )
1035
- if _response.status_code == 503:
1036
- raise ServiceUnavailableError(
1037
- headers=dict(_response.headers),
1038
- body=typing.cast(
1039
- typing.Optional[typing.Any],
1040
- parse_obj_as(
1041
- type_=typing.Optional[typing.Any], # type: ignore
1042
- object_=_response.json(),
1043
- ),
1044
- ),
1045
- )
1046
- _response_json = _response.json()
1047
- except JSONDecodeError:
1048
- raise ApiError(
1049
- status_code=_response.status_code,
1050
- headers=dict(_response.headers),
1051
- body=_response.text,
1052
- )
1053
- raise ApiError(
1054
- status_code=_response.status_code,
1055
- headers=dict(_response.headers),
1056
- body=_response_json,
1057
- )
1058
-
1059
- def gettracedetailbyenv(
1060
- self,
1061
- organization_id: str,
1062
- project_id: str,
1063
- environment_id: str,
1064
- trace_id: str,
1065
- *,
1066
- request_options: typing.Optional[RequestOptions] = None,
1067
- ) -> HttpResponse[TracesGetTraceDetailByEnvResponse]:
1068
- """
1069
- Parameters
1070
- ----------
1071
- organization_id : str
1072
-
1073
- project_id : str
1074
-
1075
- environment_id : str
1076
-
1077
- trace_id : str
1078
-
1079
- request_options : typing.Optional[RequestOptions]
1080
- Request-specific configuration.
1081
-
1082
- Returns
1083
- -------
1084
- HttpResponse[TracesGetTraceDetailByEnvResponse]
1085
- Success
1086
- """
1087
- _response = self._client_wrapper.httpx_client.request(
1088
- f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/environments/{jsonable_encoder(environment_id)}/traces/{jsonable_encoder(trace_id)}",
1089
- method="GET",
1090
- request_options=request_options,
1091
- )
1092
- try:
1093
- if 200 <= _response.status_code < 300:
1094
- _data = typing.cast(
1095
- TracesGetTraceDetailByEnvResponse,
1096
- parse_obj_as(
1097
- type_=TracesGetTraceDetailByEnvResponse, # type: ignore
1098
- object_=_response.json(),
1099
- ),
1100
- )
1101
- return HttpResponse(response=_response, data=_data)
1102
- if _response.status_code == 400:
1103
- raise BadRequestError(
1104
- headers=dict(_response.headers),
1105
- body=typing.cast(
1106
- typing.Optional[typing.Any],
1107
- parse_obj_as(
1108
- type_=typing.Optional[typing.Any], # type: ignore
1109
- object_=_response.json(),
1110
- ),
1111
- ),
1112
- )
1113
- if _response.status_code == 401:
1114
- raise UnauthorizedError(
1115
- headers=dict(_response.headers),
1116
- body=typing.cast(
1117
- UnauthorizedErrorBody,
1118
- parse_obj_as(
1119
- type_=UnauthorizedErrorBody, # type: ignore
1120
- object_=_response.json(),
1121
- ),
1122
- ),
1123
- )
1124
- if _response.status_code == 403:
1125
- raise ForbiddenError(
1126
- headers=dict(_response.headers),
1127
- body=typing.cast(
1128
- PermissionDeniedError,
1129
- parse_obj_as(
1130
- type_=PermissionDeniedError, # type: ignore
1131
- object_=_response.json(),
1132
- ),
1133
- ),
1134
- )
1135
- if _response.status_code == 404:
1136
- raise NotFoundError(
1137
- headers=dict(_response.headers),
1138
- body=typing.cast(
1139
- NotFoundErrorBody,
1140
- parse_obj_as(
1141
- type_=NotFoundErrorBody, # type: ignore
1142
- object_=_response.json(),
1143
- ),
1144
- ),
1145
- )
1146
- if _response.status_code == 429:
1147
- raise TooManyRequestsError(
1148
- headers=dict(_response.headers),
1149
- body=typing.cast(
1150
- RateLimitError,
1151
- parse_obj_as(
1152
- type_=RateLimitError, # type: ignore
1153
- object_=_response.json(),
1154
- ),
1155
- ),
1156
- )
1157
- if _response.status_code == 500:
1158
- raise InternalServerError(
1159
- headers=dict(_response.headers),
1160
- body=typing.cast(
1161
- typing.Optional[typing.Any],
1162
- parse_obj_as(
1163
- type_=typing.Optional[typing.Any], # type: ignore
1164
- object_=_response.json(),
1165
- ),
1166
- ),
1167
- )
1168
- if _response.status_code == 503:
1169
- raise ServiceUnavailableError(
1170
- headers=dict(_response.headers),
1171
- body=typing.cast(
1172
- typing.Optional[typing.Any],
1173
- parse_obj_as(
1174
- type_=typing.Optional[typing.Any], # type: ignore
1175
- object_=_response.json(),
1176
- ),
1177
- ),
1178
- )
1179
- _response_json = _response.json()
1180
- except JSONDecodeError:
1181
- raise ApiError(
1182
- status_code=_response.status_code,
1183
- headers=dict(_response.headers),
1184
- body=_response.text,
1185
- )
1186
- raise ApiError(
1187
- status_code=_response.status_code,
1188
- headers=dict(_response.headers),
1189
- body=_response_json,
1190
- )
1191
-
1192
-
1193
- class AsyncRawTracesClient:
1194
- def __init__(self, *, client_wrapper: AsyncClientWrapper):
1195
- self._client_wrapper = client_wrapper
1196
-
1197
- async def create(
1198
- self,
1199
- *,
1200
- resource_spans: typing.Sequence[TracesCreateRequestResourceSpansItem],
1201
- request_options: typing.Optional[RequestOptions] = None,
1202
- ) -> AsyncHttpResponse[TracesCreateResponse]:
1203
- """
1204
- Parameters
1205
- ----------
1206
- resource_spans : typing.Sequence[TracesCreateRequestResourceSpansItem]
1207
-
1208
- request_options : typing.Optional[RequestOptions]
1209
- Request-specific configuration.
1210
-
1211
- Returns
1212
- -------
1213
- AsyncHttpResponse[TracesCreateResponse]
1214
- Success
1215
- """
1216
- _response = await self._client_wrapper.httpx_client.request(
1217
- "traces",
1218
- method="POST",
1219
- json={
1220
- "resourceSpans": convert_and_respect_annotation_metadata(
1221
- object_=resource_spans,
1222
- annotation=typing.Sequence[TracesCreateRequestResourceSpansItem],
1223
- direction="write",
1224
- ),
1225
- },
1226
- headers={
1227
- "content-type": "application/json",
1228
- },
1229
- request_options=request_options,
1230
- omit=OMIT,
1231
- )
1232
- try:
1233
- if 200 <= _response.status_code < 300:
1234
- _data = typing.cast(
1235
- TracesCreateResponse,
1236
- parse_obj_as(
1237
- type_=TracesCreateResponse, # type: ignore
1238
- object_=_response.json(),
1239
- ),
1240
- )
1241
- return AsyncHttpResponse(response=_response, data=_data)
1242
- if _response.status_code == 400:
1243
- raise BadRequestError(
1244
- headers=dict(_response.headers),
1245
- body=typing.cast(
1246
- typing.Optional[typing.Any],
1247
- parse_obj_as(
1248
- type_=typing.Optional[typing.Any], # type: ignore
1249
- object_=_response.json(),
1250
- ),
1251
- ),
1252
- )
1253
- if _response.status_code == 401:
1254
- raise UnauthorizedError(
1255
- headers=dict(_response.headers),
1256
- body=typing.cast(
1257
- UnauthorizedErrorBody,
1258
- parse_obj_as(
1259
- type_=UnauthorizedErrorBody, # type: ignore
1260
- object_=_response.json(),
1261
- ),
1262
- ),
1263
- )
1264
- if _response.status_code == 402:
1265
- raise PaymentRequiredError(
1266
- headers=dict(_response.headers),
1267
- body=typing.cast(
1268
- PlanLimitExceededError,
1269
- parse_obj_as(
1270
- type_=PlanLimitExceededError, # type: ignore
1271
- object_=_response.json(),
1272
- ),
1273
- ),
1274
- )
1275
- if _response.status_code == 403:
1276
- raise ForbiddenError(
1277
- headers=dict(_response.headers),
1278
- body=typing.cast(
1279
- PermissionDeniedError,
1280
- parse_obj_as(
1281
- type_=PermissionDeniedError, # type: ignore
1282
- object_=_response.json(),
1283
- ),
1284
- ),
1285
- )
1286
- if _response.status_code == 404:
1287
- raise NotFoundError(
1288
- headers=dict(_response.headers),
1289
- body=typing.cast(
1290
- NotFoundErrorBody,
1291
- parse_obj_as(
1292
- type_=NotFoundErrorBody, # type: ignore
1293
- object_=_response.json(),
1294
- ),
1295
- ),
1296
- )
1297
- if _response.status_code == 409:
1298
- raise ConflictError(
1299
- headers=dict(_response.headers),
1300
- body=typing.cast(
1301
- typing.Optional[typing.Any],
1302
- parse_obj_as(
1303
- type_=typing.Optional[typing.Any], # type: ignore
1304
- object_=_response.json(),
1305
- ),
1306
- ),
1307
- )
1308
- if _response.status_code == 429:
1309
- raise TooManyRequestsError(
1310
- headers=dict(_response.headers),
1311
- body=typing.cast(
1312
- RateLimitError,
1313
- parse_obj_as(
1314
- type_=RateLimitError, # type: ignore
1315
- object_=_response.json(),
1316
- ),
1317
- ),
1318
- )
1319
- if _response.status_code == 500:
1320
- raise InternalServerError(
1321
- headers=dict(_response.headers),
1322
- body=typing.cast(
1323
- typing.Optional[typing.Any],
1324
- parse_obj_as(
1325
- type_=typing.Optional[typing.Any], # type: ignore
1326
- object_=_response.json(),
1327
- ),
1328
- ),
1329
- )
1330
- if _response.status_code == 503:
1331
- raise ServiceUnavailableError(
1332
- headers=dict(_response.headers),
1333
- body=typing.cast(
1334
- typing.Optional[typing.Any],
1335
- parse_obj_as(
1336
- type_=typing.Optional[typing.Any], # type: ignore
1337
- object_=_response.json(),
1338
- ),
1339
- ),
1340
- )
1341
- _response_json = _response.json()
1342
- except JSONDecodeError:
1343
- raise ApiError(
1344
- status_code=_response.status_code,
1345
- headers=dict(_response.headers),
1346
- body=_response.text,
1347
- )
1348
- raise ApiError(
1349
- status_code=_response.status_code,
1350
- headers=dict(_response.headers),
1351
- body=_response_json,
1352
- )
1353
-
1354
- async def search(
1355
- self,
1356
- *,
1357
- start_time: str,
1358
- end_time: str,
1359
- query: typing.Optional[str] = OMIT,
1360
- input_messages_query: typing.Optional[str] = OMIT,
1361
- output_messages_query: typing.Optional[str] = OMIT,
1362
- fuzzy_search: typing.Optional[bool] = OMIT,
1363
- trace_id: typing.Optional[str] = OMIT,
1364
- span_id: typing.Optional[str] = OMIT,
1365
- model: typing.Optional[typing.Sequence[str]] = OMIT,
1366
- provider: typing.Optional[typing.Sequence[str]] = OMIT,
1367
- function_id: typing.Optional[str] = OMIT,
1368
- function_name: typing.Optional[str] = OMIT,
1369
- span_name_prefix: typing.Optional[str] = OMIT,
1370
- has_error: typing.Optional[bool] = OMIT,
1371
- min_tokens: typing.Optional[float] = OMIT,
1372
- max_tokens: typing.Optional[float] = OMIT,
1373
- min_duration: typing.Optional[float] = OMIT,
1374
- max_duration: typing.Optional[float] = OMIT,
1375
- attribute_filters: typing.Optional[
1376
- typing.Sequence[TracesSearchRequestAttributeFiltersItem]
1377
- ] = OMIT,
1378
- limit: typing.Optional[float] = OMIT,
1379
- offset: typing.Optional[float] = OMIT,
1380
- sort_by: typing.Optional[TracesSearchRequestSortBy] = OMIT,
1381
- sort_order: typing.Optional[TracesSearchRequestSortOrder] = OMIT,
1382
- root_spans_only: typing.Optional[bool] = OMIT,
1383
- request_options: typing.Optional[RequestOptions] = None,
1384
- ) -> AsyncHttpResponse[TracesSearchResponse]:
1385
- """
1386
- Parameters
1387
- ----------
1388
- start_time : str
1389
-
1390
- end_time : str
1391
-
1392
- query : typing.Optional[str]
1393
-
1394
- input_messages_query : typing.Optional[str]
1395
-
1396
- output_messages_query : typing.Optional[str]
1397
-
1398
- fuzzy_search : typing.Optional[bool]
1399
-
1400
- trace_id : typing.Optional[str]
1401
-
1402
- span_id : typing.Optional[str]
1403
-
1404
- model : typing.Optional[typing.Sequence[str]]
1405
-
1406
- provider : typing.Optional[typing.Sequence[str]]
1407
-
1408
- function_id : typing.Optional[str]
1409
-
1410
- function_name : typing.Optional[str]
1411
-
1412
- span_name_prefix : typing.Optional[str]
1413
-
1414
- has_error : typing.Optional[bool]
1415
-
1416
- min_tokens : typing.Optional[float]
1417
-
1418
- max_tokens : typing.Optional[float]
1419
-
1420
- min_duration : typing.Optional[float]
1421
-
1422
- max_duration : typing.Optional[float]
1423
-
1424
- attribute_filters : typing.Optional[typing.Sequence[TracesSearchRequestAttributeFiltersItem]]
1425
-
1426
- limit : typing.Optional[float]
1427
-
1428
- offset : typing.Optional[float]
1429
-
1430
- sort_by : typing.Optional[TracesSearchRequestSortBy]
1431
-
1432
- sort_order : typing.Optional[TracesSearchRequestSortOrder]
1433
-
1434
- root_spans_only : typing.Optional[bool]
1435
-
1436
- request_options : typing.Optional[RequestOptions]
1437
- Request-specific configuration.
1438
-
1439
- Returns
1440
- -------
1441
- AsyncHttpResponse[TracesSearchResponse]
1442
- Success
1443
- """
1444
- _response = await self._client_wrapper.httpx_client.request(
1445
- "traces/search",
1446
- method="POST",
1447
- json={
1448
- "startTime": start_time,
1449
- "endTime": end_time,
1450
- "query": query,
1451
- "inputMessagesQuery": input_messages_query,
1452
- "outputMessagesQuery": output_messages_query,
1453
- "fuzzySearch": fuzzy_search,
1454
- "traceId": trace_id,
1455
- "spanId": span_id,
1456
- "model": model,
1457
- "provider": provider,
1458
- "functionId": function_id,
1459
- "functionName": function_name,
1460
- "spanNamePrefix": span_name_prefix,
1461
- "hasError": has_error,
1462
- "minTokens": min_tokens,
1463
- "maxTokens": max_tokens,
1464
- "minDuration": min_duration,
1465
- "maxDuration": max_duration,
1466
- "attributeFilters": convert_and_respect_annotation_metadata(
1467
- object_=attribute_filters,
1468
- annotation=typing.Sequence[TracesSearchRequestAttributeFiltersItem],
1469
- direction="write",
1470
- ),
1471
- "limit": limit,
1472
- "offset": offset,
1473
- "sortBy": sort_by,
1474
- "sortOrder": sort_order,
1475
- "rootSpansOnly": root_spans_only,
1476
- },
1477
- headers={
1478
- "content-type": "application/json",
1479
- },
1480
- request_options=request_options,
1481
- omit=OMIT,
1482
- )
1483
- try:
1484
- if 200 <= _response.status_code < 300:
1485
- _data = typing.cast(
1486
- TracesSearchResponse,
1487
- parse_obj_as(
1488
- type_=TracesSearchResponse, # type: ignore
1489
- object_=_response.json(),
1490
- ),
1491
- )
1492
- return AsyncHttpResponse(response=_response, data=_data)
1493
- if _response.status_code == 400:
1494
- raise BadRequestError(
1495
- headers=dict(_response.headers),
1496
- body=typing.cast(
1497
- typing.Optional[typing.Any],
1498
- parse_obj_as(
1499
- type_=typing.Optional[typing.Any], # type: ignore
1500
- object_=_response.json(),
1501
- ),
1502
- ),
1503
- )
1504
- if _response.status_code == 401:
1505
- raise UnauthorizedError(
1506
- headers=dict(_response.headers),
1507
- body=typing.cast(
1508
- UnauthorizedErrorBody,
1509
- parse_obj_as(
1510
- type_=UnauthorizedErrorBody, # type: ignore
1511
- object_=_response.json(),
1512
- ),
1513
- ),
1514
- )
1515
- if _response.status_code == 403:
1516
- raise ForbiddenError(
1517
- headers=dict(_response.headers),
1518
- body=typing.cast(
1519
- PermissionDeniedError,
1520
- parse_obj_as(
1521
- type_=PermissionDeniedError, # type: ignore
1522
- object_=_response.json(),
1523
- ),
1524
- ),
1525
- )
1526
- if _response.status_code == 429:
1527
- raise TooManyRequestsError(
1528
- headers=dict(_response.headers),
1529
- body=typing.cast(
1530
- RateLimitError,
1531
- parse_obj_as(
1532
- type_=RateLimitError, # type: ignore
1533
- object_=_response.json(),
1534
- ),
1535
- ),
1536
- )
1537
- if _response.status_code == 500:
1538
- raise InternalServerError(
1539
- headers=dict(_response.headers),
1540
- body=typing.cast(
1541
- typing.Optional[typing.Any],
1542
- parse_obj_as(
1543
- type_=typing.Optional[typing.Any], # type: ignore
1544
- object_=_response.json(),
1545
- ),
1546
- ),
1547
- )
1548
- if _response.status_code == 503:
1549
- raise ServiceUnavailableError(
1550
- headers=dict(_response.headers),
1551
- body=typing.cast(
1552
- typing.Optional[typing.Any],
1553
- parse_obj_as(
1554
- type_=typing.Optional[typing.Any], # type: ignore
1555
- object_=_response.json(),
1556
- ),
1557
- ),
1558
- )
1559
- _response_json = _response.json()
1560
- except JSONDecodeError:
1561
- raise ApiError(
1562
- status_code=_response.status_code,
1563
- headers=dict(_response.headers),
1564
- body=_response.text,
1565
- )
1566
- raise ApiError(
1567
- status_code=_response.status_code,
1568
- headers=dict(_response.headers),
1569
- body=_response_json,
1570
- )
1571
-
1572
- async def gettracedetail(
1573
- self, trace_id: str, *, request_options: typing.Optional[RequestOptions] = None
1574
- ) -> AsyncHttpResponse[TracesGetTraceDetailResponse]:
1575
- """
1576
- Parameters
1577
- ----------
1578
- trace_id : str
1579
-
1580
- request_options : typing.Optional[RequestOptions]
1581
- Request-specific configuration.
1582
-
1583
- Returns
1584
- -------
1585
- AsyncHttpResponse[TracesGetTraceDetailResponse]
1586
- Success
1587
- """
1588
- _response = await self._client_wrapper.httpx_client.request(
1589
- f"traces/{jsonable_encoder(trace_id)}",
1590
- method="GET",
1591
- request_options=request_options,
1592
- )
1593
- try:
1594
- if 200 <= _response.status_code < 300:
1595
- _data = typing.cast(
1596
- TracesGetTraceDetailResponse,
1597
- parse_obj_as(
1598
- type_=TracesGetTraceDetailResponse, # type: ignore
1599
- object_=_response.json(),
1600
- ),
1601
- )
1602
- return AsyncHttpResponse(response=_response, data=_data)
1603
- if _response.status_code == 400:
1604
- raise BadRequestError(
1605
- headers=dict(_response.headers),
1606
- body=typing.cast(
1607
- typing.Optional[typing.Any],
1608
- parse_obj_as(
1609
- type_=typing.Optional[typing.Any], # type: ignore
1610
- object_=_response.json(),
1611
- ),
1612
- ),
1613
- )
1614
- if _response.status_code == 401:
1615
- raise UnauthorizedError(
1616
- headers=dict(_response.headers),
1617
- body=typing.cast(
1618
- UnauthorizedErrorBody,
1619
- parse_obj_as(
1620
- type_=UnauthorizedErrorBody, # type: ignore
1621
- object_=_response.json(),
1622
- ),
1623
- ),
1624
- )
1625
- if _response.status_code == 403:
1626
- raise ForbiddenError(
1627
- headers=dict(_response.headers),
1628
- body=typing.cast(
1629
- PermissionDeniedError,
1630
- parse_obj_as(
1631
- type_=PermissionDeniedError, # type: ignore
1632
- object_=_response.json(),
1633
- ),
1634
- ),
1635
- )
1636
- if _response.status_code == 404:
1637
- raise NotFoundError(
1638
- headers=dict(_response.headers),
1639
- body=typing.cast(
1640
- NotFoundErrorBody,
1641
- parse_obj_as(
1642
- type_=NotFoundErrorBody, # type: ignore
1643
- object_=_response.json(),
1644
- ),
1645
- ),
1646
- )
1647
- if _response.status_code == 429:
1648
- raise TooManyRequestsError(
1649
- headers=dict(_response.headers),
1650
- body=typing.cast(
1651
- RateLimitError,
1652
- parse_obj_as(
1653
- type_=RateLimitError, # type: ignore
1654
- object_=_response.json(),
1655
- ),
1656
- ),
1657
- )
1658
- if _response.status_code == 500:
1659
- raise InternalServerError(
1660
- headers=dict(_response.headers),
1661
- body=typing.cast(
1662
- typing.Optional[typing.Any],
1663
- parse_obj_as(
1664
- type_=typing.Optional[typing.Any], # type: ignore
1665
- object_=_response.json(),
1666
- ),
1667
- ),
1668
- )
1669
- if _response.status_code == 503:
1670
- raise ServiceUnavailableError(
1671
- headers=dict(_response.headers),
1672
- body=typing.cast(
1673
- typing.Optional[typing.Any],
1674
- parse_obj_as(
1675
- type_=typing.Optional[typing.Any], # type: ignore
1676
- object_=_response.json(),
1677
- ),
1678
- ),
1679
- )
1680
- _response_json = _response.json()
1681
- except JSONDecodeError:
1682
- raise ApiError(
1683
- status_code=_response.status_code,
1684
- headers=dict(_response.headers),
1685
- body=_response.text,
1686
- )
1687
- raise ApiError(
1688
- status_code=_response.status_code,
1689
- headers=dict(_response.headers),
1690
- body=_response_json,
1691
- )
1692
-
1693
- async def getanalyticssummary(
1694
- self,
1695
- *,
1696
- start_time: str,
1697
- end_time: str,
1698
- function_id: typing.Optional[str] = None,
1699
- request_options: typing.Optional[RequestOptions] = None,
1700
- ) -> AsyncHttpResponse[TracesGetAnalyticsSummaryResponse]:
1701
- """
1702
- Parameters
1703
- ----------
1704
- start_time : str
1705
-
1706
- end_time : str
1707
-
1708
- function_id : typing.Optional[str]
1709
-
1710
- request_options : typing.Optional[RequestOptions]
1711
- Request-specific configuration.
1712
-
1713
- Returns
1714
- -------
1715
- AsyncHttpResponse[TracesGetAnalyticsSummaryResponse]
1716
- Success
1717
- """
1718
- _response = await self._client_wrapper.httpx_client.request(
1719
- "traces/analytics",
1720
- method="GET",
1721
- params={
1722
- "startTime": start_time,
1723
- "endTime": end_time,
1724
- "functionId": function_id,
1725
- },
1726
- request_options=request_options,
1727
- )
1728
- try:
1729
- if 200 <= _response.status_code < 300:
1730
- _data = typing.cast(
1731
- TracesGetAnalyticsSummaryResponse,
1732
- parse_obj_as(
1733
- type_=TracesGetAnalyticsSummaryResponse, # type: ignore
1734
- object_=_response.json(),
1735
- ),
1736
- )
1737
- return AsyncHttpResponse(response=_response, data=_data)
1738
- if _response.status_code == 400:
1739
- raise BadRequestError(
1740
- headers=dict(_response.headers),
1741
- body=typing.cast(
1742
- typing.Optional[typing.Any],
1743
- parse_obj_as(
1744
- type_=typing.Optional[typing.Any], # type: ignore
1745
- object_=_response.json(),
1746
- ),
1747
- ),
1748
- )
1749
- if _response.status_code == 401:
1750
- raise UnauthorizedError(
1751
- headers=dict(_response.headers),
1752
- body=typing.cast(
1753
- UnauthorizedErrorBody,
1754
- parse_obj_as(
1755
- type_=UnauthorizedErrorBody, # type: ignore
1756
- object_=_response.json(),
1757
- ),
1758
- ),
1759
- )
1760
- if _response.status_code == 403:
1761
- raise ForbiddenError(
1762
- headers=dict(_response.headers),
1763
- body=typing.cast(
1764
- PermissionDeniedError,
1765
- parse_obj_as(
1766
- type_=PermissionDeniedError, # type: ignore
1767
- object_=_response.json(),
1768
- ),
1769
- ),
1770
- )
1771
- if _response.status_code == 429:
1772
- raise TooManyRequestsError(
1773
- headers=dict(_response.headers),
1774
- body=typing.cast(
1775
- RateLimitError,
1776
- parse_obj_as(
1777
- type_=RateLimitError, # type: ignore
1778
- object_=_response.json(),
1779
- ),
1780
- ),
1781
- )
1782
- if _response.status_code == 500:
1783
- raise InternalServerError(
1784
- headers=dict(_response.headers),
1785
- body=typing.cast(
1786
- typing.Optional[typing.Any],
1787
- parse_obj_as(
1788
- type_=typing.Optional[typing.Any], # type: ignore
1789
- object_=_response.json(),
1790
- ),
1791
- ),
1792
- )
1793
- if _response.status_code == 503:
1794
- raise ServiceUnavailableError(
1795
- headers=dict(_response.headers),
1796
- body=typing.cast(
1797
- typing.Optional[typing.Any],
1798
- parse_obj_as(
1799
- type_=typing.Optional[typing.Any], # type: ignore
1800
- object_=_response.json(),
1801
- ),
1802
- ),
1803
- )
1804
- _response_json = _response.json()
1805
- except JSONDecodeError:
1806
- raise ApiError(
1807
- status_code=_response.status_code,
1808
- headers=dict(_response.headers),
1809
- body=_response.text,
1810
- )
1811
- raise ApiError(
1812
- status_code=_response.status_code,
1813
- headers=dict(_response.headers),
1814
- body=_response_json,
1815
- )
1816
-
1817
- async def listbyfunctionhash(
1818
- self,
1819
- hash: str,
1820
- *,
1821
- limit: typing.Optional[NumberFromString] = None,
1822
- offset: typing.Optional[NumberFromString] = None,
1823
- request_options: typing.Optional[RequestOptions] = None,
1824
- ) -> AsyncHttpResponse[TracesListByFunctionHashResponse]:
1825
- """
1826
- Parameters
1827
- ----------
1828
- hash : str
1829
-
1830
- limit : typing.Optional[NumberFromString]
1831
-
1832
- offset : typing.Optional[NumberFromString]
1833
-
1834
- request_options : typing.Optional[RequestOptions]
1835
- Request-specific configuration.
1836
-
1837
- Returns
1838
- -------
1839
- AsyncHttpResponse[TracesListByFunctionHashResponse]
1840
- Success
1841
- """
1842
- _response = await self._client_wrapper.httpx_client.request(
1843
- f"traces/function/hash/{jsonable_encoder(hash)}",
1844
- method="GET",
1845
- params={
1846
- "limit": limit,
1847
- "offset": offset,
1848
- },
1849
- request_options=request_options,
1850
- )
1851
- try:
1852
- if 200 <= _response.status_code < 300:
1853
- _data = typing.cast(
1854
- TracesListByFunctionHashResponse,
1855
- parse_obj_as(
1856
- type_=TracesListByFunctionHashResponse, # type: ignore
1857
- object_=_response.json(),
1858
- ),
1859
- )
1860
- return AsyncHttpResponse(response=_response, data=_data)
1861
- if _response.status_code == 400:
1862
- raise BadRequestError(
1863
- headers=dict(_response.headers),
1864
- body=typing.cast(
1865
- typing.Optional[typing.Any],
1866
- parse_obj_as(
1867
- type_=typing.Optional[typing.Any], # type: ignore
1868
- object_=_response.json(),
1869
- ),
1870
- ),
1871
- )
1872
- if _response.status_code == 401:
1873
- raise UnauthorizedError(
1874
- headers=dict(_response.headers),
1875
- body=typing.cast(
1876
- UnauthorizedErrorBody,
1877
- parse_obj_as(
1878
- type_=UnauthorizedErrorBody, # type: ignore
1879
- object_=_response.json(),
1880
- ),
1881
- ),
1882
- )
1883
- if _response.status_code == 403:
1884
- raise ForbiddenError(
1885
- headers=dict(_response.headers),
1886
- body=typing.cast(
1887
- PermissionDeniedError,
1888
- parse_obj_as(
1889
- type_=PermissionDeniedError, # type: ignore
1890
- object_=_response.json(),
1891
- ),
1892
- ),
1893
- )
1894
- if _response.status_code == 404:
1895
- raise NotFoundError(
1896
- headers=dict(_response.headers),
1897
- body=typing.cast(
1898
- NotFoundErrorBody,
1899
- parse_obj_as(
1900
- type_=NotFoundErrorBody, # type: ignore
1901
- object_=_response.json(),
1902
- ),
1903
- ),
1904
- )
1905
- if _response.status_code == 429:
1906
- raise TooManyRequestsError(
1907
- headers=dict(_response.headers),
1908
- body=typing.cast(
1909
- RateLimitError,
1910
- parse_obj_as(
1911
- type_=RateLimitError, # type: ignore
1912
- object_=_response.json(),
1913
- ),
1914
- ),
1915
- )
1916
- if _response.status_code == 500:
1917
- raise InternalServerError(
1918
- headers=dict(_response.headers),
1919
- body=typing.cast(
1920
- typing.Optional[typing.Any],
1921
- parse_obj_as(
1922
- type_=typing.Optional[typing.Any], # type: ignore
1923
- object_=_response.json(),
1924
- ),
1925
- ),
1926
- )
1927
- if _response.status_code == 503:
1928
- raise ServiceUnavailableError(
1929
- headers=dict(_response.headers),
1930
- body=typing.cast(
1931
- typing.Optional[typing.Any],
1932
- parse_obj_as(
1933
- type_=typing.Optional[typing.Any], # type: ignore
1934
- object_=_response.json(),
1935
- ),
1936
- ),
1937
- )
1938
- _response_json = _response.json()
1939
- except JSONDecodeError:
1940
- raise ApiError(
1941
- status_code=_response.status_code,
1942
- headers=dict(_response.headers),
1943
- body=_response.text,
1944
- )
1945
- raise ApiError(
1946
- status_code=_response.status_code,
1947
- headers=dict(_response.headers),
1948
- body=_response_json,
1949
- )
1950
-
1951
- async def searchbyenv(
1952
- self,
1953
- organization_id: str,
1954
- project_id: str,
1955
- environment_id: str,
1956
- *,
1957
- start_time: str,
1958
- end_time: str,
1959
- query: typing.Optional[str] = OMIT,
1960
- input_messages_query: typing.Optional[str] = OMIT,
1961
- output_messages_query: typing.Optional[str] = OMIT,
1962
- fuzzy_search: typing.Optional[bool] = OMIT,
1963
- trace_id: typing.Optional[str] = OMIT,
1964
- span_id: typing.Optional[str] = OMIT,
1965
- model: typing.Optional[typing.Sequence[str]] = OMIT,
1966
- provider: typing.Optional[typing.Sequence[str]] = OMIT,
1967
- function_id: typing.Optional[str] = OMIT,
1968
- function_name: typing.Optional[str] = OMIT,
1969
- span_name_prefix: typing.Optional[str] = OMIT,
1970
- has_error: typing.Optional[bool] = OMIT,
1971
- min_tokens: typing.Optional[float] = OMIT,
1972
- max_tokens: typing.Optional[float] = OMIT,
1973
- min_duration: typing.Optional[float] = OMIT,
1974
- max_duration: typing.Optional[float] = OMIT,
1975
- attribute_filters: typing.Optional[
1976
- typing.Sequence[TracesSearchByEnvRequestAttributeFiltersItem]
1977
- ] = OMIT,
1978
- limit: typing.Optional[float] = OMIT,
1979
- offset: typing.Optional[float] = OMIT,
1980
- sort_by: typing.Optional[TracesSearchByEnvRequestSortBy] = OMIT,
1981
- sort_order: typing.Optional[TracesSearchByEnvRequestSortOrder] = OMIT,
1982
- root_spans_only: typing.Optional[bool] = OMIT,
1983
- request_options: typing.Optional[RequestOptions] = None,
1984
- ) -> AsyncHttpResponse[TracesSearchByEnvResponse]:
1985
- """
1986
- Parameters
1987
- ----------
1988
- organization_id : str
1989
-
1990
- project_id : str
1991
-
1992
- environment_id : str
1993
-
1994
- start_time : str
1995
-
1996
- end_time : str
1997
-
1998
- query : typing.Optional[str]
1999
-
2000
- input_messages_query : typing.Optional[str]
2001
-
2002
- output_messages_query : typing.Optional[str]
2003
-
2004
- fuzzy_search : typing.Optional[bool]
2005
-
2006
- trace_id : typing.Optional[str]
2007
-
2008
- span_id : typing.Optional[str]
2009
-
2010
- model : typing.Optional[typing.Sequence[str]]
2011
-
2012
- provider : typing.Optional[typing.Sequence[str]]
2013
-
2014
- function_id : typing.Optional[str]
2015
-
2016
- function_name : typing.Optional[str]
2017
-
2018
- span_name_prefix : typing.Optional[str]
2019
-
2020
- has_error : typing.Optional[bool]
2021
-
2022
- min_tokens : typing.Optional[float]
2023
-
2024
- max_tokens : typing.Optional[float]
2025
-
2026
- min_duration : typing.Optional[float]
2027
-
2028
- max_duration : typing.Optional[float]
2029
-
2030
- attribute_filters : typing.Optional[typing.Sequence[TracesSearchByEnvRequestAttributeFiltersItem]]
2031
-
2032
- limit : typing.Optional[float]
2033
-
2034
- offset : typing.Optional[float]
2035
-
2036
- sort_by : typing.Optional[TracesSearchByEnvRequestSortBy]
2037
-
2038
- sort_order : typing.Optional[TracesSearchByEnvRequestSortOrder]
2039
-
2040
- root_spans_only : typing.Optional[bool]
2041
-
2042
- request_options : typing.Optional[RequestOptions]
2043
- Request-specific configuration.
2044
-
2045
- Returns
2046
- -------
2047
- AsyncHttpResponse[TracesSearchByEnvResponse]
2048
- Success
2049
- """
2050
- _response = await self._client_wrapper.httpx_client.request(
2051
- f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/environments/{jsonable_encoder(environment_id)}/traces/search",
2052
- method="POST",
2053
- json={
2054
- "startTime": start_time,
2055
- "endTime": end_time,
2056
- "query": query,
2057
- "inputMessagesQuery": input_messages_query,
2058
- "outputMessagesQuery": output_messages_query,
2059
- "fuzzySearch": fuzzy_search,
2060
- "traceId": trace_id,
2061
- "spanId": span_id,
2062
- "model": model,
2063
- "provider": provider,
2064
- "functionId": function_id,
2065
- "functionName": function_name,
2066
- "spanNamePrefix": span_name_prefix,
2067
- "hasError": has_error,
2068
- "minTokens": min_tokens,
2069
- "maxTokens": max_tokens,
2070
- "minDuration": min_duration,
2071
- "maxDuration": max_duration,
2072
- "attributeFilters": convert_and_respect_annotation_metadata(
2073
- object_=attribute_filters,
2074
- annotation=typing.Sequence[
2075
- TracesSearchByEnvRequestAttributeFiltersItem
2076
- ],
2077
- direction="write",
2078
- ),
2079
- "limit": limit,
2080
- "offset": offset,
2081
- "sortBy": sort_by,
2082
- "sortOrder": sort_order,
2083
- "rootSpansOnly": root_spans_only,
2084
- },
2085
- headers={
2086
- "content-type": "application/json",
2087
- },
2088
- request_options=request_options,
2089
- omit=OMIT,
2090
- )
2091
- try:
2092
- if 200 <= _response.status_code < 300:
2093
- _data = typing.cast(
2094
- TracesSearchByEnvResponse,
2095
- parse_obj_as(
2096
- type_=TracesSearchByEnvResponse, # type: ignore
2097
- object_=_response.json(),
2098
- ),
2099
- )
2100
- return AsyncHttpResponse(response=_response, data=_data)
2101
- if _response.status_code == 400:
2102
- raise BadRequestError(
2103
- headers=dict(_response.headers),
2104
- body=typing.cast(
2105
- typing.Optional[typing.Any],
2106
- parse_obj_as(
2107
- type_=typing.Optional[typing.Any], # type: ignore
2108
- object_=_response.json(),
2109
- ),
2110
- ),
2111
- )
2112
- if _response.status_code == 401:
2113
- raise UnauthorizedError(
2114
- headers=dict(_response.headers),
2115
- body=typing.cast(
2116
- UnauthorizedErrorBody,
2117
- parse_obj_as(
2118
- type_=UnauthorizedErrorBody, # type: ignore
2119
- object_=_response.json(),
2120
- ),
2121
- ),
2122
- )
2123
- if _response.status_code == 403:
2124
- raise ForbiddenError(
2125
- headers=dict(_response.headers),
2126
- body=typing.cast(
2127
- PermissionDeniedError,
2128
- parse_obj_as(
2129
- type_=PermissionDeniedError, # type: ignore
2130
- object_=_response.json(),
2131
- ),
2132
- ),
2133
- )
2134
- if _response.status_code == 404:
2135
- raise NotFoundError(
2136
- headers=dict(_response.headers),
2137
- body=typing.cast(
2138
- NotFoundErrorBody,
2139
- parse_obj_as(
2140
- type_=NotFoundErrorBody, # type: ignore
2141
- object_=_response.json(),
2142
- ),
2143
- ),
2144
- )
2145
- if _response.status_code == 429:
2146
- raise TooManyRequestsError(
2147
- headers=dict(_response.headers),
2148
- body=typing.cast(
2149
- RateLimitError,
2150
- parse_obj_as(
2151
- type_=RateLimitError, # type: ignore
2152
- object_=_response.json(),
2153
- ),
2154
- ),
2155
- )
2156
- if _response.status_code == 500:
2157
- raise InternalServerError(
2158
- headers=dict(_response.headers),
2159
- body=typing.cast(
2160
- typing.Optional[typing.Any],
2161
- parse_obj_as(
2162
- type_=typing.Optional[typing.Any], # type: ignore
2163
- object_=_response.json(),
2164
- ),
2165
- ),
2166
- )
2167
- if _response.status_code == 503:
2168
- raise ServiceUnavailableError(
2169
- headers=dict(_response.headers),
2170
- body=typing.cast(
2171
- typing.Optional[typing.Any],
2172
- parse_obj_as(
2173
- type_=typing.Optional[typing.Any], # type: ignore
2174
- object_=_response.json(),
2175
- ),
2176
- ),
2177
- )
2178
- _response_json = _response.json()
2179
- except JSONDecodeError:
2180
- raise ApiError(
2181
- status_code=_response.status_code,
2182
- headers=dict(_response.headers),
2183
- body=_response.text,
2184
- )
2185
- raise ApiError(
2186
- status_code=_response.status_code,
2187
- headers=dict(_response.headers),
2188
- body=_response_json,
2189
- )
2190
-
2191
- async def gettracedetailbyenv(
2192
- self,
2193
- organization_id: str,
2194
- project_id: str,
2195
- environment_id: str,
2196
- trace_id: str,
2197
- *,
2198
- request_options: typing.Optional[RequestOptions] = None,
2199
- ) -> AsyncHttpResponse[TracesGetTraceDetailByEnvResponse]:
2200
- """
2201
- Parameters
2202
- ----------
2203
- organization_id : str
2204
-
2205
- project_id : str
2206
-
2207
- environment_id : str
2208
-
2209
- trace_id : str
2210
-
2211
- request_options : typing.Optional[RequestOptions]
2212
- Request-specific configuration.
2213
-
2214
- Returns
2215
- -------
2216
- AsyncHttpResponse[TracesGetTraceDetailByEnvResponse]
2217
- Success
2218
- """
2219
- _response = await self._client_wrapper.httpx_client.request(
2220
- f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/environments/{jsonable_encoder(environment_id)}/traces/{jsonable_encoder(trace_id)}",
2221
- method="GET",
2222
- request_options=request_options,
2223
- )
2224
- try:
2225
- if 200 <= _response.status_code < 300:
2226
- _data = typing.cast(
2227
- TracesGetTraceDetailByEnvResponse,
2228
- parse_obj_as(
2229
- type_=TracesGetTraceDetailByEnvResponse, # type: ignore
2230
- object_=_response.json(),
2231
- ),
2232
- )
2233
- return AsyncHttpResponse(response=_response, data=_data)
2234
- if _response.status_code == 400:
2235
- raise BadRequestError(
2236
- headers=dict(_response.headers),
2237
- body=typing.cast(
2238
- typing.Optional[typing.Any],
2239
- parse_obj_as(
2240
- type_=typing.Optional[typing.Any], # type: ignore
2241
- object_=_response.json(),
2242
- ),
2243
- ),
2244
- )
2245
- if _response.status_code == 401:
2246
- raise UnauthorizedError(
2247
- headers=dict(_response.headers),
2248
- body=typing.cast(
2249
- UnauthorizedErrorBody,
2250
- parse_obj_as(
2251
- type_=UnauthorizedErrorBody, # type: ignore
2252
- object_=_response.json(),
2253
- ),
2254
- ),
2255
- )
2256
- if _response.status_code == 403:
2257
- raise ForbiddenError(
2258
- headers=dict(_response.headers),
2259
- body=typing.cast(
2260
- PermissionDeniedError,
2261
- parse_obj_as(
2262
- type_=PermissionDeniedError, # type: ignore
2263
- object_=_response.json(),
2264
- ),
2265
- ),
2266
- )
2267
- if _response.status_code == 404:
2268
- raise NotFoundError(
2269
- headers=dict(_response.headers),
2270
- body=typing.cast(
2271
- NotFoundErrorBody,
2272
- parse_obj_as(
2273
- type_=NotFoundErrorBody, # type: ignore
2274
- object_=_response.json(),
2275
- ),
2276
- ),
2277
- )
2278
- if _response.status_code == 429:
2279
- raise TooManyRequestsError(
2280
- headers=dict(_response.headers),
2281
- body=typing.cast(
2282
- RateLimitError,
2283
- parse_obj_as(
2284
- type_=RateLimitError, # type: ignore
2285
- object_=_response.json(),
2286
- ),
2287
- ),
2288
- )
2289
- if _response.status_code == 500:
2290
- raise InternalServerError(
2291
- headers=dict(_response.headers),
2292
- body=typing.cast(
2293
- typing.Optional[typing.Any],
2294
- parse_obj_as(
2295
- type_=typing.Optional[typing.Any], # type: ignore
2296
- object_=_response.json(),
2297
- ),
2298
- ),
2299
- )
2300
- if _response.status_code == 503:
2301
- raise ServiceUnavailableError(
2302
- headers=dict(_response.headers),
2303
- body=typing.cast(
2304
- typing.Optional[typing.Any],
2305
- parse_obj_as(
2306
- type_=typing.Optional[typing.Any], # type: ignore
2307
- object_=_response.json(),
2308
- ),
2309
- ),
2310
- )
2311
- _response_json = _response.json()
2312
- except JSONDecodeError:
2313
- raise ApiError(
2314
- status_code=_response.status_code,
2315
- headers=dict(_response.headers),
2316
- body=_response.text,
2317
- )
2318
- raise ApiError(
2319
- status_code=_response.status_code,
2320
- headers=dict(_response.headers),
2321
- body=_response_json,
2322
- )