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,1567 +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 ..errors.bad_request_error import BadRequestError
13
- from ..errors.conflict_error import ConflictError
14
- from ..errors.forbidden_error import ForbiddenError
15
- from ..errors.internal_server_error import InternalServerError
16
- from ..errors.not_found_error import NotFoundError
17
- from ..errors.service_unavailable_error import ServiceUnavailableError
18
- from ..errors.too_many_requests_error import TooManyRequestsError
19
- from ..types.not_found_error_body import NotFoundErrorBody
20
- from ..types.permission_denied_error import PermissionDeniedError
21
- from ..types.rate_limit_error import RateLimitError
22
- from .types.environments_create_response import EnvironmentsCreateResponse
23
- from .types.environments_get_analytics_response import EnvironmentsGetAnalyticsResponse
24
- from .types.environments_get_response import EnvironmentsGetResponse
25
- from .types.environments_list_response_item import EnvironmentsListResponseItem
26
- from .types.environments_update_response import EnvironmentsUpdateResponse
27
-
28
- # this is used as the default value for optional parameters
29
- OMIT = typing.cast(typing.Any, ...)
30
-
31
-
32
- class RawEnvironmentsClient:
33
- def __init__(self, *, client_wrapper: SyncClientWrapper):
34
- self._client_wrapper = client_wrapper
35
-
36
- def list(
37
- self,
38
- organization_id: str,
39
- project_id: str,
40
- *,
41
- request_options: typing.Optional[RequestOptions] = None,
42
- ) -> HttpResponse[typing.List[EnvironmentsListResponseItem]]:
43
- """
44
- Parameters
45
- ----------
46
- organization_id : str
47
-
48
- project_id : str
49
-
50
- request_options : typing.Optional[RequestOptions]
51
- Request-specific configuration.
52
-
53
- Returns
54
- -------
55
- HttpResponse[typing.List[EnvironmentsListResponseItem]]
56
- Success
57
- """
58
- _response = self._client_wrapper.httpx_client.request(
59
- f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/environments",
60
- method="GET",
61
- request_options=request_options,
62
- )
63
- try:
64
- if 200 <= _response.status_code < 300:
65
- _data = typing.cast(
66
- typing.List[EnvironmentsListResponseItem],
67
- parse_obj_as(
68
- type_=typing.List[EnvironmentsListResponseItem], # type: ignore
69
- object_=_response.json(),
70
- ),
71
- )
72
- return HttpResponse(response=_response, data=_data)
73
- if _response.status_code == 400:
74
- raise BadRequestError(
75
- headers=dict(_response.headers),
76
- body=typing.cast(
77
- typing.Optional[typing.Any],
78
- parse_obj_as(
79
- type_=typing.Optional[typing.Any], # type: ignore
80
- object_=_response.json(),
81
- ),
82
- ),
83
- )
84
- if _response.status_code == 403:
85
- raise ForbiddenError(
86
- headers=dict(_response.headers),
87
- body=typing.cast(
88
- PermissionDeniedError,
89
- parse_obj_as(
90
- type_=PermissionDeniedError, # type: ignore
91
- object_=_response.json(),
92
- ),
93
- ),
94
- )
95
- if _response.status_code == 404:
96
- raise NotFoundError(
97
- headers=dict(_response.headers),
98
- body=typing.cast(
99
- NotFoundErrorBody,
100
- parse_obj_as(
101
- type_=NotFoundErrorBody, # type: ignore
102
- object_=_response.json(),
103
- ),
104
- ),
105
- )
106
- if _response.status_code == 429:
107
- raise TooManyRequestsError(
108
- headers=dict(_response.headers),
109
- body=typing.cast(
110
- RateLimitError,
111
- parse_obj_as(
112
- type_=RateLimitError, # type: ignore
113
- object_=_response.json(),
114
- ),
115
- ),
116
- )
117
- if _response.status_code == 500:
118
- raise InternalServerError(
119
- headers=dict(_response.headers),
120
- body=typing.cast(
121
- typing.Optional[typing.Any],
122
- parse_obj_as(
123
- type_=typing.Optional[typing.Any], # type: ignore
124
- object_=_response.json(),
125
- ),
126
- ),
127
- )
128
- if _response.status_code == 503:
129
- raise ServiceUnavailableError(
130
- headers=dict(_response.headers),
131
- body=typing.cast(
132
- typing.Optional[typing.Any],
133
- parse_obj_as(
134
- type_=typing.Optional[typing.Any], # type: ignore
135
- object_=_response.json(),
136
- ),
137
- ),
138
- )
139
- _response_json = _response.json()
140
- except JSONDecodeError:
141
- raise ApiError(
142
- status_code=_response.status_code,
143
- headers=dict(_response.headers),
144
- body=_response.text,
145
- )
146
- raise ApiError(
147
- status_code=_response.status_code,
148
- headers=dict(_response.headers),
149
- body=_response_json,
150
- )
151
-
152
- def create(
153
- self,
154
- organization_id: str,
155
- project_id: str,
156
- *,
157
- name: str,
158
- slug: str,
159
- request_options: typing.Optional[RequestOptions] = None,
160
- ) -> HttpResponse[EnvironmentsCreateResponse]:
161
- """
162
- Parameters
163
- ----------
164
- organization_id : str
165
-
166
- project_id : str
167
-
168
- name : str
169
- a string at most 100 character(s) long
170
-
171
- slug : str
172
- a string matching the pattern ^[a-z0-9][a-z0-9_-]*[a-z0-9]$
173
-
174
- request_options : typing.Optional[RequestOptions]
175
- Request-specific configuration.
176
-
177
- Returns
178
- -------
179
- HttpResponse[EnvironmentsCreateResponse]
180
- Success
181
- """
182
- _response = self._client_wrapper.httpx_client.request(
183
- f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/environments",
184
- method="POST",
185
- json={
186
- "name": name,
187
- "slug": slug,
188
- },
189
- headers={
190
- "content-type": "application/json",
191
- },
192
- request_options=request_options,
193
- omit=OMIT,
194
- )
195
- try:
196
- if 200 <= _response.status_code < 300:
197
- _data = typing.cast(
198
- EnvironmentsCreateResponse,
199
- parse_obj_as(
200
- type_=EnvironmentsCreateResponse, # type: ignore
201
- object_=_response.json(),
202
- ),
203
- )
204
- return HttpResponse(response=_response, data=_data)
205
- if _response.status_code == 400:
206
- raise BadRequestError(
207
- headers=dict(_response.headers),
208
- body=typing.cast(
209
- typing.Optional[typing.Any],
210
- parse_obj_as(
211
- type_=typing.Optional[typing.Any], # type: ignore
212
- object_=_response.json(),
213
- ),
214
- ),
215
- )
216
- if _response.status_code == 403:
217
- raise ForbiddenError(
218
- headers=dict(_response.headers),
219
- body=typing.cast(
220
- PermissionDeniedError,
221
- parse_obj_as(
222
- type_=PermissionDeniedError, # type: ignore
223
- object_=_response.json(),
224
- ),
225
- ),
226
- )
227
- if _response.status_code == 404:
228
- raise NotFoundError(
229
- headers=dict(_response.headers),
230
- body=typing.cast(
231
- NotFoundErrorBody,
232
- parse_obj_as(
233
- type_=NotFoundErrorBody, # type: ignore
234
- object_=_response.json(),
235
- ),
236
- ),
237
- )
238
- if _response.status_code == 409:
239
- raise ConflictError(
240
- headers=dict(_response.headers),
241
- body=typing.cast(
242
- typing.Optional[typing.Any],
243
- parse_obj_as(
244
- type_=typing.Optional[typing.Any], # type: ignore
245
- object_=_response.json(),
246
- ),
247
- ),
248
- )
249
- if _response.status_code == 429:
250
- raise TooManyRequestsError(
251
- headers=dict(_response.headers),
252
- body=typing.cast(
253
- RateLimitError,
254
- parse_obj_as(
255
- type_=RateLimitError, # type: ignore
256
- object_=_response.json(),
257
- ),
258
- ),
259
- )
260
- if _response.status_code == 500:
261
- raise InternalServerError(
262
- headers=dict(_response.headers),
263
- body=typing.cast(
264
- typing.Optional[typing.Any],
265
- parse_obj_as(
266
- type_=typing.Optional[typing.Any], # type: ignore
267
- object_=_response.json(),
268
- ),
269
- ),
270
- )
271
- if _response.status_code == 503:
272
- raise ServiceUnavailableError(
273
- headers=dict(_response.headers),
274
- body=typing.cast(
275
- typing.Optional[typing.Any],
276
- parse_obj_as(
277
- type_=typing.Optional[typing.Any], # type: ignore
278
- object_=_response.json(),
279
- ),
280
- ),
281
- )
282
- _response_json = _response.json()
283
- except JSONDecodeError:
284
- raise ApiError(
285
- status_code=_response.status_code,
286
- headers=dict(_response.headers),
287
- body=_response.text,
288
- )
289
- raise ApiError(
290
- status_code=_response.status_code,
291
- headers=dict(_response.headers),
292
- body=_response_json,
293
- )
294
-
295
- def get(
296
- self,
297
- organization_id: str,
298
- project_id: str,
299
- environment_id: str,
300
- *,
301
- request_options: typing.Optional[RequestOptions] = None,
302
- ) -> HttpResponse[EnvironmentsGetResponse]:
303
- """
304
- Parameters
305
- ----------
306
- organization_id : str
307
-
308
- project_id : str
309
-
310
- environment_id : str
311
-
312
- request_options : typing.Optional[RequestOptions]
313
- Request-specific configuration.
314
-
315
- Returns
316
- -------
317
- HttpResponse[EnvironmentsGetResponse]
318
- Success
319
- """
320
- _response = self._client_wrapper.httpx_client.request(
321
- f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/environments/{jsonable_encoder(environment_id)}",
322
- method="GET",
323
- request_options=request_options,
324
- )
325
- try:
326
- if 200 <= _response.status_code < 300:
327
- _data = typing.cast(
328
- EnvironmentsGetResponse,
329
- parse_obj_as(
330
- type_=EnvironmentsGetResponse, # type: ignore
331
- object_=_response.json(),
332
- ),
333
- )
334
- return HttpResponse(response=_response, data=_data)
335
- if _response.status_code == 400:
336
- raise BadRequestError(
337
- headers=dict(_response.headers),
338
- body=typing.cast(
339
- typing.Optional[typing.Any],
340
- parse_obj_as(
341
- type_=typing.Optional[typing.Any], # type: ignore
342
- object_=_response.json(),
343
- ),
344
- ),
345
- )
346
- if _response.status_code == 403:
347
- raise ForbiddenError(
348
- headers=dict(_response.headers),
349
- body=typing.cast(
350
- PermissionDeniedError,
351
- parse_obj_as(
352
- type_=PermissionDeniedError, # type: ignore
353
- object_=_response.json(),
354
- ),
355
- ),
356
- )
357
- if _response.status_code == 404:
358
- raise NotFoundError(
359
- headers=dict(_response.headers),
360
- body=typing.cast(
361
- NotFoundErrorBody,
362
- parse_obj_as(
363
- type_=NotFoundErrorBody, # type: ignore
364
- object_=_response.json(),
365
- ),
366
- ),
367
- )
368
- if _response.status_code == 429:
369
- raise TooManyRequestsError(
370
- headers=dict(_response.headers),
371
- body=typing.cast(
372
- RateLimitError,
373
- parse_obj_as(
374
- type_=RateLimitError, # type: ignore
375
- object_=_response.json(),
376
- ),
377
- ),
378
- )
379
- if _response.status_code == 500:
380
- raise InternalServerError(
381
- headers=dict(_response.headers),
382
- body=typing.cast(
383
- typing.Optional[typing.Any],
384
- parse_obj_as(
385
- type_=typing.Optional[typing.Any], # type: ignore
386
- object_=_response.json(),
387
- ),
388
- ),
389
- )
390
- if _response.status_code == 503:
391
- raise ServiceUnavailableError(
392
- headers=dict(_response.headers),
393
- body=typing.cast(
394
- typing.Optional[typing.Any],
395
- parse_obj_as(
396
- type_=typing.Optional[typing.Any], # type: ignore
397
- object_=_response.json(),
398
- ),
399
- ),
400
- )
401
- _response_json = _response.json()
402
- except JSONDecodeError:
403
- raise ApiError(
404
- status_code=_response.status_code,
405
- headers=dict(_response.headers),
406
- body=_response.text,
407
- )
408
- raise ApiError(
409
- status_code=_response.status_code,
410
- headers=dict(_response.headers),
411
- body=_response_json,
412
- )
413
-
414
- def update(
415
- self,
416
- organization_id: str,
417
- project_id: str,
418
- environment_id: str,
419
- *,
420
- name: typing.Optional[str] = OMIT,
421
- slug: typing.Optional[str] = OMIT,
422
- request_options: typing.Optional[RequestOptions] = None,
423
- ) -> HttpResponse[EnvironmentsUpdateResponse]:
424
- """
425
- Parameters
426
- ----------
427
- organization_id : str
428
-
429
- project_id : str
430
-
431
- environment_id : str
432
-
433
- name : typing.Optional[str]
434
- a string at most 100 character(s) long
435
-
436
- slug : typing.Optional[str]
437
- a string matching the pattern ^[a-z0-9][a-z0-9_-]*[a-z0-9]$
438
-
439
- request_options : typing.Optional[RequestOptions]
440
- Request-specific configuration.
441
-
442
- Returns
443
- -------
444
- HttpResponse[EnvironmentsUpdateResponse]
445
- Success
446
- """
447
- _response = self._client_wrapper.httpx_client.request(
448
- f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/environments/{jsonable_encoder(environment_id)}",
449
- method="PUT",
450
- json={
451
- "name": name,
452
- "slug": slug,
453
- },
454
- headers={
455
- "content-type": "application/json",
456
- },
457
- request_options=request_options,
458
- omit=OMIT,
459
- )
460
- try:
461
- if 200 <= _response.status_code < 300:
462
- _data = typing.cast(
463
- EnvironmentsUpdateResponse,
464
- parse_obj_as(
465
- type_=EnvironmentsUpdateResponse, # type: ignore
466
- object_=_response.json(),
467
- ),
468
- )
469
- return HttpResponse(response=_response, data=_data)
470
- if _response.status_code == 400:
471
- raise BadRequestError(
472
- headers=dict(_response.headers),
473
- body=typing.cast(
474
- typing.Optional[typing.Any],
475
- parse_obj_as(
476
- type_=typing.Optional[typing.Any], # type: ignore
477
- object_=_response.json(),
478
- ),
479
- ),
480
- )
481
- if _response.status_code == 403:
482
- raise ForbiddenError(
483
- headers=dict(_response.headers),
484
- body=typing.cast(
485
- PermissionDeniedError,
486
- parse_obj_as(
487
- type_=PermissionDeniedError, # type: ignore
488
- object_=_response.json(),
489
- ),
490
- ),
491
- )
492
- if _response.status_code == 404:
493
- raise NotFoundError(
494
- headers=dict(_response.headers),
495
- body=typing.cast(
496
- NotFoundErrorBody,
497
- parse_obj_as(
498
- type_=NotFoundErrorBody, # type: ignore
499
- object_=_response.json(),
500
- ),
501
- ),
502
- )
503
- if _response.status_code == 409:
504
- raise ConflictError(
505
- headers=dict(_response.headers),
506
- body=typing.cast(
507
- typing.Optional[typing.Any],
508
- parse_obj_as(
509
- type_=typing.Optional[typing.Any], # type: ignore
510
- object_=_response.json(),
511
- ),
512
- ),
513
- )
514
- if _response.status_code == 429:
515
- raise TooManyRequestsError(
516
- headers=dict(_response.headers),
517
- body=typing.cast(
518
- RateLimitError,
519
- parse_obj_as(
520
- type_=RateLimitError, # type: ignore
521
- object_=_response.json(),
522
- ),
523
- ),
524
- )
525
- if _response.status_code == 500:
526
- raise InternalServerError(
527
- headers=dict(_response.headers),
528
- body=typing.cast(
529
- typing.Optional[typing.Any],
530
- parse_obj_as(
531
- type_=typing.Optional[typing.Any], # type: ignore
532
- object_=_response.json(),
533
- ),
534
- ),
535
- )
536
- if _response.status_code == 503:
537
- raise ServiceUnavailableError(
538
- headers=dict(_response.headers),
539
- body=typing.cast(
540
- typing.Optional[typing.Any],
541
- parse_obj_as(
542
- type_=typing.Optional[typing.Any], # type: ignore
543
- object_=_response.json(),
544
- ),
545
- ),
546
- )
547
- _response_json = _response.json()
548
- except JSONDecodeError:
549
- raise ApiError(
550
- status_code=_response.status_code,
551
- headers=dict(_response.headers),
552
- body=_response.text,
553
- )
554
- raise ApiError(
555
- status_code=_response.status_code,
556
- headers=dict(_response.headers),
557
- body=_response_json,
558
- )
559
-
560
- def delete(
561
- self,
562
- organization_id: str,
563
- project_id: str,
564
- environment_id: str,
565
- *,
566
- request_options: typing.Optional[RequestOptions] = None,
567
- ) -> HttpResponse[None]:
568
- """
569
- Parameters
570
- ----------
571
- organization_id : str
572
-
573
- project_id : str
574
-
575
- environment_id : str
576
-
577
- request_options : typing.Optional[RequestOptions]
578
- Request-specific configuration.
579
-
580
- Returns
581
- -------
582
- HttpResponse[None]
583
- """
584
- _response = self._client_wrapper.httpx_client.request(
585
- f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/environments/{jsonable_encoder(environment_id)}",
586
- method="DELETE",
587
- request_options=request_options,
588
- )
589
- try:
590
- if 200 <= _response.status_code < 300:
591
- return HttpResponse(response=_response, data=None)
592
- if _response.status_code == 400:
593
- raise BadRequestError(
594
- headers=dict(_response.headers),
595
- body=typing.cast(
596
- typing.Optional[typing.Any],
597
- parse_obj_as(
598
- type_=typing.Optional[typing.Any], # type: ignore
599
- object_=_response.json(),
600
- ),
601
- ),
602
- )
603
- if _response.status_code == 403:
604
- raise ForbiddenError(
605
- headers=dict(_response.headers),
606
- body=typing.cast(
607
- PermissionDeniedError,
608
- parse_obj_as(
609
- type_=PermissionDeniedError, # type: ignore
610
- object_=_response.json(),
611
- ),
612
- ),
613
- )
614
- if _response.status_code == 404:
615
- raise NotFoundError(
616
- headers=dict(_response.headers),
617
- body=typing.cast(
618
- NotFoundErrorBody,
619
- parse_obj_as(
620
- type_=NotFoundErrorBody, # type: ignore
621
- object_=_response.json(),
622
- ),
623
- ),
624
- )
625
- if _response.status_code == 429:
626
- raise TooManyRequestsError(
627
- headers=dict(_response.headers),
628
- body=typing.cast(
629
- RateLimitError,
630
- parse_obj_as(
631
- type_=RateLimitError, # type: ignore
632
- object_=_response.json(),
633
- ),
634
- ),
635
- )
636
- if _response.status_code == 500:
637
- raise InternalServerError(
638
- headers=dict(_response.headers),
639
- body=typing.cast(
640
- typing.Optional[typing.Any],
641
- parse_obj_as(
642
- type_=typing.Optional[typing.Any], # type: ignore
643
- object_=_response.json(),
644
- ),
645
- ),
646
- )
647
- if _response.status_code == 503:
648
- raise ServiceUnavailableError(
649
- headers=dict(_response.headers),
650
- body=typing.cast(
651
- typing.Optional[typing.Any],
652
- parse_obj_as(
653
- type_=typing.Optional[typing.Any], # type: ignore
654
- object_=_response.json(),
655
- ),
656
- ),
657
- )
658
- _response_json = _response.json()
659
- except JSONDecodeError:
660
- raise ApiError(
661
- status_code=_response.status_code,
662
- headers=dict(_response.headers),
663
- body=_response.text,
664
- )
665
- raise ApiError(
666
- status_code=_response.status_code,
667
- headers=dict(_response.headers),
668
- body=_response_json,
669
- )
670
-
671
- def getanalytics(
672
- self,
673
- organization_id: str,
674
- project_id: str,
675
- environment_id: str,
676
- *,
677
- start_time: str,
678
- end_time: str,
679
- request_options: typing.Optional[RequestOptions] = None,
680
- ) -> HttpResponse[EnvironmentsGetAnalyticsResponse]:
681
- """
682
- Parameters
683
- ----------
684
- organization_id : str
685
-
686
- project_id : str
687
-
688
- environment_id : str
689
-
690
- start_time : str
691
-
692
- end_time : str
693
-
694
- request_options : typing.Optional[RequestOptions]
695
- Request-specific configuration.
696
-
697
- Returns
698
- -------
699
- HttpResponse[EnvironmentsGetAnalyticsResponse]
700
- Success
701
- """
702
- _response = self._client_wrapper.httpx_client.request(
703
- f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/environments/{jsonable_encoder(environment_id)}/analytics",
704
- method="GET",
705
- params={
706
- "startTime": start_time,
707
- "endTime": end_time,
708
- },
709
- request_options=request_options,
710
- )
711
- try:
712
- if 200 <= _response.status_code < 300:
713
- _data = typing.cast(
714
- EnvironmentsGetAnalyticsResponse,
715
- parse_obj_as(
716
- type_=EnvironmentsGetAnalyticsResponse, # type: ignore
717
- object_=_response.json(),
718
- ),
719
- )
720
- return HttpResponse(response=_response, data=_data)
721
- if _response.status_code == 400:
722
- raise BadRequestError(
723
- headers=dict(_response.headers),
724
- body=typing.cast(
725
- typing.Optional[typing.Any],
726
- parse_obj_as(
727
- type_=typing.Optional[typing.Any], # type: ignore
728
- object_=_response.json(),
729
- ),
730
- ),
731
- )
732
- if _response.status_code == 403:
733
- raise ForbiddenError(
734
- headers=dict(_response.headers),
735
- body=typing.cast(
736
- PermissionDeniedError,
737
- parse_obj_as(
738
- type_=PermissionDeniedError, # type: ignore
739
- object_=_response.json(),
740
- ),
741
- ),
742
- )
743
- if _response.status_code == 404:
744
- raise NotFoundError(
745
- headers=dict(_response.headers),
746
- body=typing.cast(
747
- NotFoundErrorBody,
748
- parse_obj_as(
749
- type_=NotFoundErrorBody, # type: ignore
750
- object_=_response.json(),
751
- ),
752
- ),
753
- )
754
- if _response.status_code == 429:
755
- raise TooManyRequestsError(
756
- headers=dict(_response.headers),
757
- body=typing.cast(
758
- RateLimitError,
759
- parse_obj_as(
760
- type_=RateLimitError, # type: ignore
761
- object_=_response.json(),
762
- ),
763
- ),
764
- )
765
- if _response.status_code == 500:
766
- raise InternalServerError(
767
- headers=dict(_response.headers),
768
- body=typing.cast(
769
- typing.Optional[typing.Any],
770
- parse_obj_as(
771
- type_=typing.Optional[typing.Any], # type: ignore
772
- object_=_response.json(),
773
- ),
774
- ),
775
- )
776
- if _response.status_code == 503:
777
- raise ServiceUnavailableError(
778
- headers=dict(_response.headers),
779
- body=typing.cast(
780
- typing.Optional[typing.Any],
781
- parse_obj_as(
782
- type_=typing.Optional[typing.Any], # type: ignore
783
- object_=_response.json(),
784
- ),
785
- ),
786
- )
787
- _response_json = _response.json()
788
- except JSONDecodeError:
789
- raise ApiError(
790
- status_code=_response.status_code,
791
- headers=dict(_response.headers),
792
- body=_response.text,
793
- )
794
- raise ApiError(
795
- status_code=_response.status_code,
796
- headers=dict(_response.headers),
797
- body=_response_json,
798
- )
799
-
800
-
801
- class AsyncRawEnvironmentsClient:
802
- def __init__(self, *, client_wrapper: AsyncClientWrapper):
803
- self._client_wrapper = client_wrapper
804
-
805
- async def list(
806
- self,
807
- organization_id: str,
808
- project_id: str,
809
- *,
810
- request_options: typing.Optional[RequestOptions] = None,
811
- ) -> AsyncHttpResponse[typing.List[EnvironmentsListResponseItem]]:
812
- """
813
- Parameters
814
- ----------
815
- organization_id : str
816
-
817
- project_id : str
818
-
819
- request_options : typing.Optional[RequestOptions]
820
- Request-specific configuration.
821
-
822
- Returns
823
- -------
824
- AsyncHttpResponse[typing.List[EnvironmentsListResponseItem]]
825
- Success
826
- """
827
- _response = await self._client_wrapper.httpx_client.request(
828
- f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/environments",
829
- method="GET",
830
- request_options=request_options,
831
- )
832
- try:
833
- if 200 <= _response.status_code < 300:
834
- _data = typing.cast(
835
- typing.List[EnvironmentsListResponseItem],
836
- parse_obj_as(
837
- type_=typing.List[EnvironmentsListResponseItem], # type: ignore
838
- object_=_response.json(),
839
- ),
840
- )
841
- return AsyncHttpResponse(response=_response, data=_data)
842
- if _response.status_code == 400:
843
- raise BadRequestError(
844
- headers=dict(_response.headers),
845
- body=typing.cast(
846
- typing.Optional[typing.Any],
847
- parse_obj_as(
848
- type_=typing.Optional[typing.Any], # type: ignore
849
- object_=_response.json(),
850
- ),
851
- ),
852
- )
853
- if _response.status_code == 403:
854
- raise ForbiddenError(
855
- headers=dict(_response.headers),
856
- body=typing.cast(
857
- PermissionDeniedError,
858
- parse_obj_as(
859
- type_=PermissionDeniedError, # type: ignore
860
- object_=_response.json(),
861
- ),
862
- ),
863
- )
864
- if _response.status_code == 404:
865
- raise NotFoundError(
866
- headers=dict(_response.headers),
867
- body=typing.cast(
868
- NotFoundErrorBody,
869
- parse_obj_as(
870
- type_=NotFoundErrorBody, # type: ignore
871
- object_=_response.json(),
872
- ),
873
- ),
874
- )
875
- if _response.status_code == 429:
876
- raise TooManyRequestsError(
877
- headers=dict(_response.headers),
878
- body=typing.cast(
879
- RateLimitError,
880
- parse_obj_as(
881
- type_=RateLimitError, # type: ignore
882
- object_=_response.json(),
883
- ),
884
- ),
885
- )
886
- if _response.status_code == 500:
887
- raise InternalServerError(
888
- headers=dict(_response.headers),
889
- body=typing.cast(
890
- typing.Optional[typing.Any],
891
- parse_obj_as(
892
- type_=typing.Optional[typing.Any], # type: ignore
893
- object_=_response.json(),
894
- ),
895
- ),
896
- )
897
- if _response.status_code == 503:
898
- raise ServiceUnavailableError(
899
- headers=dict(_response.headers),
900
- body=typing.cast(
901
- typing.Optional[typing.Any],
902
- parse_obj_as(
903
- type_=typing.Optional[typing.Any], # type: ignore
904
- object_=_response.json(),
905
- ),
906
- ),
907
- )
908
- _response_json = _response.json()
909
- except JSONDecodeError:
910
- raise ApiError(
911
- status_code=_response.status_code,
912
- headers=dict(_response.headers),
913
- body=_response.text,
914
- )
915
- raise ApiError(
916
- status_code=_response.status_code,
917
- headers=dict(_response.headers),
918
- body=_response_json,
919
- )
920
-
921
- async def create(
922
- self,
923
- organization_id: str,
924
- project_id: str,
925
- *,
926
- name: str,
927
- slug: str,
928
- request_options: typing.Optional[RequestOptions] = None,
929
- ) -> AsyncHttpResponse[EnvironmentsCreateResponse]:
930
- """
931
- Parameters
932
- ----------
933
- organization_id : str
934
-
935
- project_id : str
936
-
937
- name : str
938
- a string at most 100 character(s) long
939
-
940
- slug : str
941
- a string matching the pattern ^[a-z0-9][a-z0-9_-]*[a-z0-9]$
942
-
943
- request_options : typing.Optional[RequestOptions]
944
- Request-specific configuration.
945
-
946
- Returns
947
- -------
948
- AsyncHttpResponse[EnvironmentsCreateResponse]
949
- Success
950
- """
951
- _response = await self._client_wrapper.httpx_client.request(
952
- f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/environments",
953
- method="POST",
954
- json={
955
- "name": name,
956
- "slug": slug,
957
- },
958
- headers={
959
- "content-type": "application/json",
960
- },
961
- request_options=request_options,
962
- omit=OMIT,
963
- )
964
- try:
965
- if 200 <= _response.status_code < 300:
966
- _data = typing.cast(
967
- EnvironmentsCreateResponse,
968
- parse_obj_as(
969
- type_=EnvironmentsCreateResponse, # type: ignore
970
- object_=_response.json(),
971
- ),
972
- )
973
- return AsyncHttpResponse(response=_response, data=_data)
974
- if _response.status_code == 400:
975
- raise BadRequestError(
976
- headers=dict(_response.headers),
977
- body=typing.cast(
978
- typing.Optional[typing.Any],
979
- parse_obj_as(
980
- type_=typing.Optional[typing.Any], # type: ignore
981
- object_=_response.json(),
982
- ),
983
- ),
984
- )
985
- if _response.status_code == 403:
986
- raise ForbiddenError(
987
- headers=dict(_response.headers),
988
- body=typing.cast(
989
- PermissionDeniedError,
990
- parse_obj_as(
991
- type_=PermissionDeniedError, # type: ignore
992
- object_=_response.json(),
993
- ),
994
- ),
995
- )
996
- if _response.status_code == 404:
997
- raise NotFoundError(
998
- headers=dict(_response.headers),
999
- body=typing.cast(
1000
- NotFoundErrorBody,
1001
- parse_obj_as(
1002
- type_=NotFoundErrorBody, # type: ignore
1003
- object_=_response.json(),
1004
- ),
1005
- ),
1006
- )
1007
- if _response.status_code == 409:
1008
- raise ConflictError(
1009
- headers=dict(_response.headers),
1010
- body=typing.cast(
1011
- typing.Optional[typing.Any],
1012
- parse_obj_as(
1013
- type_=typing.Optional[typing.Any], # type: ignore
1014
- object_=_response.json(),
1015
- ),
1016
- ),
1017
- )
1018
- if _response.status_code == 429:
1019
- raise TooManyRequestsError(
1020
- headers=dict(_response.headers),
1021
- body=typing.cast(
1022
- RateLimitError,
1023
- parse_obj_as(
1024
- type_=RateLimitError, # type: ignore
1025
- object_=_response.json(),
1026
- ),
1027
- ),
1028
- )
1029
- if _response.status_code == 500:
1030
- raise InternalServerError(
1031
- headers=dict(_response.headers),
1032
- body=typing.cast(
1033
- typing.Optional[typing.Any],
1034
- parse_obj_as(
1035
- type_=typing.Optional[typing.Any], # type: ignore
1036
- object_=_response.json(),
1037
- ),
1038
- ),
1039
- )
1040
- if _response.status_code == 503:
1041
- raise ServiceUnavailableError(
1042
- headers=dict(_response.headers),
1043
- body=typing.cast(
1044
- typing.Optional[typing.Any],
1045
- parse_obj_as(
1046
- type_=typing.Optional[typing.Any], # type: ignore
1047
- object_=_response.json(),
1048
- ),
1049
- ),
1050
- )
1051
- _response_json = _response.json()
1052
- except JSONDecodeError:
1053
- raise ApiError(
1054
- status_code=_response.status_code,
1055
- headers=dict(_response.headers),
1056
- body=_response.text,
1057
- )
1058
- raise ApiError(
1059
- status_code=_response.status_code,
1060
- headers=dict(_response.headers),
1061
- body=_response_json,
1062
- )
1063
-
1064
- async def get(
1065
- self,
1066
- organization_id: str,
1067
- project_id: str,
1068
- environment_id: str,
1069
- *,
1070
- request_options: typing.Optional[RequestOptions] = None,
1071
- ) -> AsyncHttpResponse[EnvironmentsGetResponse]:
1072
- """
1073
- Parameters
1074
- ----------
1075
- organization_id : str
1076
-
1077
- project_id : str
1078
-
1079
- environment_id : str
1080
-
1081
- request_options : typing.Optional[RequestOptions]
1082
- Request-specific configuration.
1083
-
1084
- Returns
1085
- -------
1086
- AsyncHttpResponse[EnvironmentsGetResponse]
1087
- Success
1088
- """
1089
- _response = await self._client_wrapper.httpx_client.request(
1090
- f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/environments/{jsonable_encoder(environment_id)}",
1091
- method="GET",
1092
- request_options=request_options,
1093
- )
1094
- try:
1095
- if 200 <= _response.status_code < 300:
1096
- _data = typing.cast(
1097
- EnvironmentsGetResponse,
1098
- parse_obj_as(
1099
- type_=EnvironmentsGetResponse, # type: ignore
1100
- object_=_response.json(),
1101
- ),
1102
- )
1103
- return AsyncHttpResponse(response=_response, data=_data)
1104
- if _response.status_code == 400:
1105
- raise BadRequestError(
1106
- headers=dict(_response.headers),
1107
- body=typing.cast(
1108
- typing.Optional[typing.Any],
1109
- parse_obj_as(
1110
- type_=typing.Optional[typing.Any], # type: ignore
1111
- object_=_response.json(),
1112
- ),
1113
- ),
1114
- )
1115
- if _response.status_code == 403:
1116
- raise ForbiddenError(
1117
- headers=dict(_response.headers),
1118
- body=typing.cast(
1119
- PermissionDeniedError,
1120
- parse_obj_as(
1121
- type_=PermissionDeniedError, # type: ignore
1122
- object_=_response.json(),
1123
- ),
1124
- ),
1125
- )
1126
- if _response.status_code == 404:
1127
- raise NotFoundError(
1128
- headers=dict(_response.headers),
1129
- body=typing.cast(
1130
- NotFoundErrorBody,
1131
- parse_obj_as(
1132
- type_=NotFoundErrorBody, # type: ignore
1133
- object_=_response.json(),
1134
- ),
1135
- ),
1136
- )
1137
- if _response.status_code == 429:
1138
- raise TooManyRequestsError(
1139
- headers=dict(_response.headers),
1140
- body=typing.cast(
1141
- RateLimitError,
1142
- parse_obj_as(
1143
- type_=RateLimitError, # type: ignore
1144
- object_=_response.json(),
1145
- ),
1146
- ),
1147
- )
1148
- if _response.status_code == 500:
1149
- raise InternalServerError(
1150
- headers=dict(_response.headers),
1151
- body=typing.cast(
1152
- typing.Optional[typing.Any],
1153
- parse_obj_as(
1154
- type_=typing.Optional[typing.Any], # type: ignore
1155
- object_=_response.json(),
1156
- ),
1157
- ),
1158
- )
1159
- if _response.status_code == 503:
1160
- raise ServiceUnavailableError(
1161
- headers=dict(_response.headers),
1162
- body=typing.cast(
1163
- typing.Optional[typing.Any],
1164
- parse_obj_as(
1165
- type_=typing.Optional[typing.Any], # type: ignore
1166
- object_=_response.json(),
1167
- ),
1168
- ),
1169
- )
1170
- _response_json = _response.json()
1171
- except JSONDecodeError:
1172
- raise ApiError(
1173
- status_code=_response.status_code,
1174
- headers=dict(_response.headers),
1175
- body=_response.text,
1176
- )
1177
- raise ApiError(
1178
- status_code=_response.status_code,
1179
- headers=dict(_response.headers),
1180
- body=_response_json,
1181
- )
1182
-
1183
- async def update(
1184
- self,
1185
- organization_id: str,
1186
- project_id: str,
1187
- environment_id: str,
1188
- *,
1189
- name: typing.Optional[str] = OMIT,
1190
- slug: typing.Optional[str] = OMIT,
1191
- request_options: typing.Optional[RequestOptions] = None,
1192
- ) -> AsyncHttpResponse[EnvironmentsUpdateResponse]:
1193
- """
1194
- Parameters
1195
- ----------
1196
- organization_id : str
1197
-
1198
- project_id : str
1199
-
1200
- environment_id : str
1201
-
1202
- name : typing.Optional[str]
1203
- a string at most 100 character(s) long
1204
-
1205
- slug : typing.Optional[str]
1206
- a string matching the pattern ^[a-z0-9][a-z0-9_-]*[a-z0-9]$
1207
-
1208
- request_options : typing.Optional[RequestOptions]
1209
- Request-specific configuration.
1210
-
1211
- Returns
1212
- -------
1213
- AsyncHttpResponse[EnvironmentsUpdateResponse]
1214
- Success
1215
- """
1216
- _response = await self._client_wrapper.httpx_client.request(
1217
- f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/environments/{jsonable_encoder(environment_id)}",
1218
- method="PUT",
1219
- json={
1220
- "name": name,
1221
- "slug": slug,
1222
- },
1223
- headers={
1224
- "content-type": "application/json",
1225
- },
1226
- request_options=request_options,
1227
- omit=OMIT,
1228
- )
1229
- try:
1230
- if 200 <= _response.status_code < 300:
1231
- _data = typing.cast(
1232
- EnvironmentsUpdateResponse,
1233
- parse_obj_as(
1234
- type_=EnvironmentsUpdateResponse, # type: ignore
1235
- object_=_response.json(),
1236
- ),
1237
- )
1238
- return AsyncHttpResponse(response=_response, data=_data)
1239
- if _response.status_code == 400:
1240
- raise BadRequestError(
1241
- headers=dict(_response.headers),
1242
- body=typing.cast(
1243
- typing.Optional[typing.Any],
1244
- parse_obj_as(
1245
- type_=typing.Optional[typing.Any], # type: ignore
1246
- object_=_response.json(),
1247
- ),
1248
- ),
1249
- )
1250
- if _response.status_code == 403:
1251
- raise ForbiddenError(
1252
- headers=dict(_response.headers),
1253
- body=typing.cast(
1254
- PermissionDeniedError,
1255
- parse_obj_as(
1256
- type_=PermissionDeniedError, # type: ignore
1257
- object_=_response.json(),
1258
- ),
1259
- ),
1260
- )
1261
- if _response.status_code == 404:
1262
- raise NotFoundError(
1263
- headers=dict(_response.headers),
1264
- body=typing.cast(
1265
- NotFoundErrorBody,
1266
- parse_obj_as(
1267
- type_=NotFoundErrorBody, # type: ignore
1268
- object_=_response.json(),
1269
- ),
1270
- ),
1271
- )
1272
- if _response.status_code == 409:
1273
- raise ConflictError(
1274
- headers=dict(_response.headers),
1275
- body=typing.cast(
1276
- typing.Optional[typing.Any],
1277
- parse_obj_as(
1278
- type_=typing.Optional[typing.Any], # type: ignore
1279
- object_=_response.json(),
1280
- ),
1281
- ),
1282
- )
1283
- if _response.status_code == 429:
1284
- raise TooManyRequestsError(
1285
- headers=dict(_response.headers),
1286
- body=typing.cast(
1287
- RateLimitError,
1288
- parse_obj_as(
1289
- type_=RateLimitError, # type: ignore
1290
- object_=_response.json(),
1291
- ),
1292
- ),
1293
- )
1294
- if _response.status_code == 500:
1295
- raise InternalServerError(
1296
- headers=dict(_response.headers),
1297
- body=typing.cast(
1298
- typing.Optional[typing.Any],
1299
- parse_obj_as(
1300
- type_=typing.Optional[typing.Any], # type: ignore
1301
- object_=_response.json(),
1302
- ),
1303
- ),
1304
- )
1305
- if _response.status_code == 503:
1306
- raise ServiceUnavailableError(
1307
- headers=dict(_response.headers),
1308
- body=typing.cast(
1309
- typing.Optional[typing.Any],
1310
- parse_obj_as(
1311
- type_=typing.Optional[typing.Any], # type: ignore
1312
- object_=_response.json(),
1313
- ),
1314
- ),
1315
- )
1316
- _response_json = _response.json()
1317
- except JSONDecodeError:
1318
- raise ApiError(
1319
- status_code=_response.status_code,
1320
- headers=dict(_response.headers),
1321
- body=_response.text,
1322
- )
1323
- raise ApiError(
1324
- status_code=_response.status_code,
1325
- headers=dict(_response.headers),
1326
- body=_response_json,
1327
- )
1328
-
1329
- async def delete(
1330
- self,
1331
- organization_id: str,
1332
- project_id: str,
1333
- environment_id: str,
1334
- *,
1335
- request_options: typing.Optional[RequestOptions] = None,
1336
- ) -> AsyncHttpResponse[None]:
1337
- """
1338
- Parameters
1339
- ----------
1340
- organization_id : str
1341
-
1342
- project_id : str
1343
-
1344
- environment_id : str
1345
-
1346
- request_options : typing.Optional[RequestOptions]
1347
- Request-specific configuration.
1348
-
1349
- Returns
1350
- -------
1351
- AsyncHttpResponse[None]
1352
- """
1353
- _response = await self._client_wrapper.httpx_client.request(
1354
- f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/environments/{jsonable_encoder(environment_id)}",
1355
- method="DELETE",
1356
- request_options=request_options,
1357
- )
1358
- try:
1359
- if 200 <= _response.status_code < 300:
1360
- return AsyncHttpResponse(response=_response, data=None)
1361
- if _response.status_code == 400:
1362
- raise BadRequestError(
1363
- headers=dict(_response.headers),
1364
- body=typing.cast(
1365
- typing.Optional[typing.Any],
1366
- parse_obj_as(
1367
- type_=typing.Optional[typing.Any], # type: ignore
1368
- object_=_response.json(),
1369
- ),
1370
- ),
1371
- )
1372
- if _response.status_code == 403:
1373
- raise ForbiddenError(
1374
- headers=dict(_response.headers),
1375
- body=typing.cast(
1376
- PermissionDeniedError,
1377
- parse_obj_as(
1378
- type_=PermissionDeniedError, # type: ignore
1379
- object_=_response.json(),
1380
- ),
1381
- ),
1382
- )
1383
- if _response.status_code == 404:
1384
- raise NotFoundError(
1385
- headers=dict(_response.headers),
1386
- body=typing.cast(
1387
- NotFoundErrorBody,
1388
- parse_obj_as(
1389
- type_=NotFoundErrorBody, # type: ignore
1390
- object_=_response.json(),
1391
- ),
1392
- ),
1393
- )
1394
- if _response.status_code == 429:
1395
- raise TooManyRequestsError(
1396
- headers=dict(_response.headers),
1397
- body=typing.cast(
1398
- RateLimitError,
1399
- parse_obj_as(
1400
- type_=RateLimitError, # type: ignore
1401
- object_=_response.json(),
1402
- ),
1403
- ),
1404
- )
1405
- if _response.status_code == 500:
1406
- raise InternalServerError(
1407
- headers=dict(_response.headers),
1408
- body=typing.cast(
1409
- typing.Optional[typing.Any],
1410
- parse_obj_as(
1411
- type_=typing.Optional[typing.Any], # type: ignore
1412
- object_=_response.json(),
1413
- ),
1414
- ),
1415
- )
1416
- if _response.status_code == 503:
1417
- raise ServiceUnavailableError(
1418
- headers=dict(_response.headers),
1419
- body=typing.cast(
1420
- typing.Optional[typing.Any],
1421
- parse_obj_as(
1422
- type_=typing.Optional[typing.Any], # type: ignore
1423
- object_=_response.json(),
1424
- ),
1425
- ),
1426
- )
1427
- _response_json = _response.json()
1428
- except JSONDecodeError:
1429
- raise ApiError(
1430
- status_code=_response.status_code,
1431
- headers=dict(_response.headers),
1432
- body=_response.text,
1433
- )
1434
- raise ApiError(
1435
- status_code=_response.status_code,
1436
- headers=dict(_response.headers),
1437
- body=_response_json,
1438
- )
1439
-
1440
- async def getanalytics(
1441
- self,
1442
- organization_id: str,
1443
- project_id: str,
1444
- environment_id: str,
1445
- *,
1446
- start_time: str,
1447
- end_time: str,
1448
- request_options: typing.Optional[RequestOptions] = None,
1449
- ) -> AsyncHttpResponse[EnvironmentsGetAnalyticsResponse]:
1450
- """
1451
- Parameters
1452
- ----------
1453
- organization_id : str
1454
-
1455
- project_id : str
1456
-
1457
- environment_id : str
1458
-
1459
- start_time : str
1460
-
1461
- end_time : str
1462
-
1463
- request_options : typing.Optional[RequestOptions]
1464
- Request-specific configuration.
1465
-
1466
- Returns
1467
- -------
1468
- AsyncHttpResponse[EnvironmentsGetAnalyticsResponse]
1469
- Success
1470
- """
1471
- _response = await self._client_wrapper.httpx_client.request(
1472
- f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/environments/{jsonable_encoder(environment_id)}/analytics",
1473
- method="GET",
1474
- params={
1475
- "startTime": start_time,
1476
- "endTime": end_time,
1477
- },
1478
- request_options=request_options,
1479
- )
1480
- try:
1481
- if 200 <= _response.status_code < 300:
1482
- _data = typing.cast(
1483
- EnvironmentsGetAnalyticsResponse,
1484
- parse_obj_as(
1485
- type_=EnvironmentsGetAnalyticsResponse, # type: ignore
1486
- object_=_response.json(),
1487
- ),
1488
- )
1489
- return AsyncHttpResponse(response=_response, data=_data)
1490
- if _response.status_code == 400:
1491
- raise BadRequestError(
1492
- headers=dict(_response.headers),
1493
- body=typing.cast(
1494
- typing.Optional[typing.Any],
1495
- parse_obj_as(
1496
- type_=typing.Optional[typing.Any], # type: ignore
1497
- object_=_response.json(),
1498
- ),
1499
- ),
1500
- )
1501
- if _response.status_code == 403:
1502
- raise ForbiddenError(
1503
- headers=dict(_response.headers),
1504
- body=typing.cast(
1505
- PermissionDeniedError,
1506
- parse_obj_as(
1507
- type_=PermissionDeniedError, # type: ignore
1508
- object_=_response.json(),
1509
- ),
1510
- ),
1511
- )
1512
- if _response.status_code == 404:
1513
- raise NotFoundError(
1514
- headers=dict(_response.headers),
1515
- body=typing.cast(
1516
- NotFoundErrorBody,
1517
- parse_obj_as(
1518
- type_=NotFoundErrorBody, # type: ignore
1519
- object_=_response.json(),
1520
- ),
1521
- ),
1522
- )
1523
- if _response.status_code == 429:
1524
- raise TooManyRequestsError(
1525
- headers=dict(_response.headers),
1526
- body=typing.cast(
1527
- RateLimitError,
1528
- parse_obj_as(
1529
- type_=RateLimitError, # type: ignore
1530
- object_=_response.json(),
1531
- ),
1532
- ),
1533
- )
1534
- if _response.status_code == 500:
1535
- raise InternalServerError(
1536
- headers=dict(_response.headers),
1537
- body=typing.cast(
1538
- typing.Optional[typing.Any],
1539
- parse_obj_as(
1540
- type_=typing.Optional[typing.Any], # type: ignore
1541
- object_=_response.json(),
1542
- ),
1543
- ),
1544
- )
1545
- if _response.status_code == 503:
1546
- raise ServiceUnavailableError(
1547
- headers=dict(_response.headers),
1548
- body=typing.cast(
1549
- typing.Optional[typing.Any],
1550
- parse_obj_as(
1551
- type_=typing.Optional[typing.Any], # type: ignore
1552
- object_=_response.json(),
1553
- ),
1554
- ),
1555
- )
1556
- _response_json = _response.json()
1557
- except JSONDecodeError:
1558
- raise ApiError(
1559
- status_code=_response.status_code,
1560
- headers=dict(_response.headers),
1561
- body=_response.text,
1562
- )
1563
- raise ApiError(
1564
- status_code=_response.status_code,
1565
- headers=dict(_response.headers),
1566
- body=_response_json,
1567
- )