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,1039 +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.project_memberships_create_request_role import (
23
- ProjectMembershipsCreateRequestRole,
24
- )
25
- from .types.project_memberships_create_response import ProjectMembershipsCreateResponse
26
- from .types.project_memberships_list_response_item import (
27
- ProjectMembershipsListResponseItem,
28
- )
29
- from .types.project_memberships_update_request_role import (
30
- ProjectMembershipsUpdateRequestRole,
31
- )
32
- from .types.project_memberships_update_response import ProjectMembershipsUpdateResponse
33
-
34
- # this is used as the default value for optional parameters
35
- OMIT = typing.cast(typing.Any, ...)
36
-
37
-
38
- class RawProjectMembershipsClient:
39
- def __init__(self, *, client_wrapper: SyncClientWrapper):
40
- self._client_wrapper = client_wrapper
41
-
42
- def list(
43
- self,
44
- organization_id: str,
45
- project_id: str,
46
- *,
47
- request_options: typing.Optional[RequestOptions] = None,
48
- ) -> HttpResponse[typing.List[ProjectMembershipsListResponseItem]]:
49
- """
50
- Parameters
51
- ----------
52
- organization_id : str
53
-
54
- project_id : str
55
-
56
- request_options : typing.Optional[RequestOptions]
57
- Request-specific configuration.
58
-
59
- Returns
60
- -------
61
- HttpResponse[typing.List[ProjectMembershipsListResponseItem]]
62
- Success
63
- """
64
- _response = self._client_wrapper.httpx_client.request(
65
- f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/members",
66
- method="GET",
67
- request_options=request_options,
68
- )
69
- try:
70
- if 200 <= _response.status_code < 300:
71
- _data = typing.cast(
72
- typing.List[ProjectMembershipsListResponseItem],
73
- parse_obj_as(
74
- type_=typing.List[ProjectMembershipsListResponseItem], # type: ignore
75
- object_=_response.json(),
76
- ),
77
- )
78
- return HttpResponse(response=_response, data=_data)
79
- if _response.status_code == 400:
80
- raise BadRequestError(
81
- headers=dict(_response.headers),
82
- body=typing.cast(
83
- typing.Optional[typing.Any],
84
- parse_obj_as(
85
- type_=typing.Optional[typing.Any], # type: ignore
86
- object_=_response.json(),
87
- ),
88
- ),
89
- )
90
- if _response.status_code == 403:
91
- raise ForbiddenError(
92
- headers=dict(_response.headers),
93
- body=typing.cast(
94
- PermissionDeniedError,
95
- parse_obj_as(
96
- type_=PermissionDeniedError, # type: ignore
97
- object_=_response.json(),
98
- ),
99
- ),
100
- )
101
- if _response.status_code == 404:
102
- raise NotFoundError(
103
- headers=dict(_response.headers),
104
- body=typing.cast(
105
- NotFoundErrorBody,
106
- parse_obj_as(
107
- type_=NotFoundErrorBody, # type: ignore
108
- object_=_response.json(),
109
- ),
110
- ),
111
- )
112
- if _response.status_code == 429:
113
- raise TooManyRequestsError(
114
- headers=dict(_response.headers),
115
- body=typing.cast(
116
- RateLimitError,
117
- parse_obj_as(
118
- type_=RateLimitError, # type: ignore
119
- object_=_response.json(),
120
- ),
121
- ),
122
- )
123
- if _response.status_code == 500:
124
- raise InternalServerError(
125
- headers=dict(_response.headers),
126
- body=typing.cast(
127
- typing.Optional[typing.Any],
128
- parse_obj_as(
129
- type_=typing.Optional[typing.Any], # type: ignore
130
- object_=_response.json(),
131
- ),
132
- ),
133
- )
134
- if _response.status_code == 503:
135
- raise ServiceUnavailableError(
136
- headers=dict(_response.headers),
137
- body=typing.cast(
138
- typing.Optional[typing.Any],
139
- parse_obj_as(
140
- type_=typing.Optional[typing.Any], # type: ignore
141
- object_=_response.json(),
142
- ),
143
- ),
144
- )
145
- _response_json = _response.json()
146
- except JSONDecodeError:
147
- raise ApiError(
148
- status_code=_response.status_code,
149
- headers=dict(_response.headers),
150
- body=_response.text,
151
- )
152
- raise ApiError(
153
- status_code=_response.status_code,
154
- headers=dict(_response.headers),
155
- body=_response_json,
156
- )
157
-
158
- def create(
159
- self,
160
- organization_id: str,
161
- project_id: str,
162
- *,
163
- member_id: str,
164
- role: ProjectMembershipsCreateRequestRole,
165
- request_options: typing.Optional[RequestOptions] = None,
166
- ) -> HttpResponse[ProjectMembershipsCreateResponse]:
167
- """
168
- Parameters
169
- ----------
170
- organization_id : str
171
-
172
- project_id : str
173
-
174
- member_id : str
175
-
176
- role : ProjectMembershipsCreateRequestRole
177
-
178
- request_options : typing.Optional[RequestOptions]
179
- Request-specific configuration.
180
-
181
- Returns
182
- -------
183
- HttpResponse[ProjectMembershipsCreateResponse]
184
- Success
185
- """
186
- _response = self._client_wrapper.httpx_client.request(
187
- f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/members",
188
- method="POST",
189
- json={
190
- "memberId": member_id,
191
- "role": role,
192
- },
193
- headers={
194
- "content-type": "application/json",
195
- },
196
- request_options=request_options,
197
- omit=OMIT,
198
- )
199
- try:
200
- if 200 <= _response.status_code < 300:
201
- _data = typing.cast(
202
- ProjectMembershipsCreateResponse,
203
- parse_obj_as(
204
- type_=ProjectMembershipsCreateResponse, # type: ignore
205
- object_=_response.json(),
206
- ),
207
- )
208
- return HttpResponse(response=_response, data=_data)
209
- if _response.status_code == 400:
210
- raise BadRequestError(
211
- headers=dict(_response.headers),
212
- body=typing.cast(
213
- typing.Optional[typing.Any],
214
- parse_obj_as(
215
- type_=typing.Optional[typing.Any], # type: ignore
216
- object_=_response.json(),
217
- ),
218
- ),
219
- )
220
- if _response.status_code == 403:
221
- raise ForbiddenError(
222
- headers=dict(_response.headers),
223
- body=typing.cast(
224
- PermissionDeniedError,
225
- parse_obj_as(
226
- type_=PermissionDeniedError, # type: ignore
227
- object_=_response.json(),
228
- ),
229
- ),
230
- )
231
- if _response.status_code == 404:
232
- raise NotFoundError(
233
- headers=dict(_response.headers),
234
- body=typing.cast(
235
- NotFoundErrorBody,
236
- parse_obj_as(
237
- type_=NotFoundErrorBody, # type: ignore
238
- object_=_response.json(),
239
- ),
240
- ),
241
- )
242
- if _response.status_code == 409:
243
- raise ConflictError(
244
- headers=dict(_response.headers),
245
- body=typing.cast(
246
- typing.Optional[typing.Any],
247
- parse_obj_as(
248
- type_=typing.Optional[typing.Any], # type: ignore
249
- object_=_response.json(),
250
- ),
251
- ),
252
- )
253
- if _response.status_code == 429:
254
- raise TooManyRequestsError(
255
- headers=dict(_response.headers),
256
- body=typing.cast(
257
- RateLimitError,
258
- parse_obj_as(
259
- type_=RateLimitError, # type: ignore
260
- object_=_response.json(),
261
- ),
262
- ),
263
- )
264
- if _response.status_code == 500:
265
- raise InternalServerError(
266
- headers=dict(_response.headers),
267
- body=typing.cast(
268
- typing.Optional[typing.Any],
269
- parse_obj_as(
270
- type_=typing.Optional[typing.Any], # type: ignore
271
- object_=_response.json(),
272
- ),
273
- ),
274
- )
275
- if _response.status_code == 503:
276
- raise ServiceUnavailableError(
277
- headers=dict(_response.headers),
278
- body=typing.cast(
279
- typing.Optional[typing.Any],
280
- parse_obj_as(
281
- type_=typing.Optional[typing.Any], # type: ignore
282
- object_=_response.json(),
283
- ),
284
- ),
285
- )
286
- _response_json = _response.json()
287
- except JSONDecodeError:
288
- raise ApiError(
289
- status_code=_response.status_code,
290
- headers=dict(_response.headers),
291
- body=_response.text,
292
- )
293
- raise ApiError(
294
- status_code=_response.status_code,
295
- headers=dict(_response.headers),
296
- body=_response_json,
297
- )
298
-
299
- def delete(
300
- self,
301
- organization_id: str,
302
- project_id: str,
303
- member_id: str,
304
- *,
305
- request_options: typing.Optional[RequestOptions] = None,
306
- ) -> HttpResponse[None]:
307
- """
308
- Parameters
309
- ----------
310
- organization_id : str
311
-
312
- project_id : str
313
-
314
- member_id : str
315
-
316
- request_options : typing.Optional[RequestOptions]
317
- Request-specific configuration.
318
-
319
- Returns
320
- -------
321
- HttpResponse[None]
322
- """
323
- _response = self._client_wrapper.httpx_client.request(
324
- f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/members/{jsonable_encoder(member_id)}",
325
- method="DELETE",
326
- request_options=request_options,
327
- )
328
- try:
329
- if 200 <= _response.status_code < 300:
330
- return HttpResponse(response=_response, data=None)
331
- if _response.status_code == 400:
332
- raise BadRequestError(
333
- headers=dict(_response.headers),
334
- body=typing.cast(
335
- typing.Optional[typing.Any],
336
- parse_obj_as(
337
- type_=typing.Optional[typing.Any], # type: ignore
338
- object_=_response.json(),
339
- ),
340
- ),
341
- )
342
- if _response.status_code == 403:
343
- raise ForbiddenError(
344
- headers=dict(_response.headers),
345
- body=typing.cast(
346
- PermissionDeniedError,
347
- parse_obj_as(
348
- type_=PermissionDeniedError, # type: ignore
349
- object_=_response.json(),
350
- ),
351
- ),
352
- )
353
- if _response.status_code == 404:
354
- raise NotFoundError(
355
- headers=dict(_response.headers),
356
- body=typing.cast(
357
- NotFoundErrorBody,
358
- parse_obj_as(
359
- type_=NotFoundErrorBody, # type: ignore
360
- object_=_response.json(),
361
- ),
362
- ),
363
- )
364
- if _response.status_code == 429:
365
- raise TooManyRequestsError(
366
- headers=dict(_response.headers),
367
- body=typing.cast(
368
- RateLimitError,
369
- parse_obj_as(
370
- type_=RateLimitError, # type: ignore
371
- object_=_response.json(),
372
- ),
373
- ),
374
- )
375
- if _response.status_code == 500:
376
- raise InternalServerError(
377
- headers=dict(_response.headers),
378
- body=typing.cast(
379
- typing.Optional[typing.Any],
380
- parse_obj_as(
381
- type_=typing.Optional[typing.Any], # type: ignore
382
- object_=_response.json(),
383
- ),
384
- ),
385
- )
386
- if _response.status_code == 503:
387
- raise ServiceUnavailableError(
388
- headers=dict(_response.headers),
389
- body=typing.cast(
390
- typing.Optional[typing.Any],
391
- parse_obj_as(
392
- type_=typing.Optional[typing.Any], # type: ignore
393
- object_=_response.json(),
394
- ),
395
- ),
396
- )
397
- _response_json = _response.json()
398
- except JSONDecodeError:
399
- raise ApiError(
400
- status_code=_response.status_code,
401
- headers=dict(_response.headers),
402
- body=_response.text,
403
- )
404
- raise ApiError(
405
- status_code=_response.status_code,
406
- headers=dict(_response.headers),
407
- body=_response_json,
408
- )
409
-
410
- def update(
411
- self,
412
- organization_id: str,
413
- project_id: str,
414
- member_id: str,
415
- *,
416
- role: ProjectMembershipsUpdateRequestRole,
417
- request_options: typing.Optional[RequestOptions] = None,
418
- ) -> HttpResponse[ProjectMembershipsUpdateResponse]:
419
- """
420
- Parameters
421
- ----------
422
- organization_id : str
423
-
424
- project_id : str
425
-
426
- member_id : str
427
-
428
- role : ProjectMembershipsUpdateRequestRole
429
-
430
- request_options : typing.Optional[RequestOptions]
431
- Request-specific configuration.
432
-
433
- Returns
434
- -------
435
- HttpResponse[ProjectMembershipsUpdateResponse]
436
- Success
437
- """
438
- _response = self._client_wrapper.httpx_client.request(
439
- f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/members/{jsonable_encoder(member_id)}",
440
- method="PATCH",
441
- json={
442
- "role": role,
443
- },
444
- headers={
445
- "content-type": "application/json",
446
- },
447
- request_options=request_options,
448
- omit=OMIT,
449
- )
450
- try:
451
- if 200 <= _response.status_code < 300:
452
- _data = typing.cast(
453
- ProjectMembershipsUpdateResponse,
454
- parse_obj_as(
455
- type_=ProjectMembershipsUpdateResponse, # type: ignore
456
- object_=_response.json(),
457
- ),
458
- )
459
- return HttpResponse(response=_response, data=_data)
460
- if _response.status_code == 400:
461
- raise BadRequestError(
462
- headers=dict(_response.headers),
463
- body=typing.cast(
464
- typing.Optional[typing.Any],
465
- parse_obj_as(
466
- type_=typing.Optional[typing.Any], # type: ignore
467
- object_=_response.json(),
468
- ),
469
- ),
470
- )
471
- if _response.status_code == 403:
472
- raise ForbiddenError(
473
- headers=dict(_response.headers),
474
- body=typing.cast(
475
- PermissionDeniedError,
476
- parse_obj_as(
477
- type_=PermissionDeniedError, # type: ignore
478
- object_=_response.json(),
479
- ),
480
- ),
481
- )
482
- if _response.status_code == 404:
483
- raise NotFoundError(
484
- headers=dict(_response.headers),
485
- body=typing.cast(
486
- NotFoundErrorBody,
487
- parse_obj_as(
488
- type_=NotFoundErrorBody, # type: ignore
489
- object_=_response.json(),
490
- ),
491
- ),
492
- )
493
- if _response.status_code == 429:
494
- raise TooManyRequestsError(
495
- headers=dict(_response.headers),
496
- body=typing.cast(
497
- RateLimitError,
498
- parse_obj_as(
499
- type_=RateLimitError, # type: ignore
500
- object_=_response.json(),
501
- ),
502
- ),
503
- )
504
- if _response.status_code == 500:
505
- raise InternalServerError(
506
- headers=dict(_response.headers),
507
- body=typing.cast(
508
- typing.Optional[typing.Any],
509
- parse_obj_as(
510
- type_=typing.Optional[typing.Any], # type: ignore
511
- object_=_response.json(),
512
- ),
513
- ),
514
- )
515
- if _response.status_code == 503:
516
- raise ServiceUnavailableError(
517
- headers=dict(_response.headers),
518
- body=typing.cast(
519
- typing.Optional[typing.Any],
520
- parse_obj_as(
521
- type_=typing.Optional[typing.Any], # type: ignore
522
- object_=_response.json(),
523
- ),
524
- ),
525
- )
526
- _response_json = _response.json()
527
- except JSONDecodeError:
528
- raise ApiError(
529
- status_code=_response.status_code,
530
- headers=dict(_response.headers),
531
- body=_response.text,
532
- )
533
- raise ApiError(
534
- status_code=_response.status_code,
535
- headers=dict(_response.headers),
536
- body=_response_json,
537
- )
538
-
539
-
540
- class AsyncRawProjectMembershipsClient:
541
- def __init__(self, *, client_wrapper: AsyncClientWrapper):
542
- self._client_wrapper = client_wrapper
543
-
544
- async def list(
545
- self,
546
- organization_id: str,
547
- project_id: str,
548
- *,
549
- request_options: typing.Optional[RequestOptions] = None,
550
- ) -> AsyncHttpResponse[typing.List[ProjectMembershipsListResponseItem]]:
551
- """
552
- Parameters
553
- ----------
554
- organization_id : str
555
-
556
- project_id : str
557
-
558
- request_options : typing.Optional[RequestOptions]
559
- Request-specific configuration.
560
-
561
- Returns
562
- -------
563
- AsyncHttpResponse[typing.List[ProjectMembershipsListResponseItem]]
564
- Success
565
- """
566
- _response = await self._client_wrapper.httpx_client.request(
567
- f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/members",
568
- method="GET",
569
- request_options=request_options,
570
- )
571
- try:
572
- if 200 <= _response.status_code < 300:
573
- _data = typing.cast(
574
- typing.List[ProjectMembershipsListResponseItem],
575
- parse_obj_as(
576
- type_=typing.List[ProjectMembershipsListResponseItem], # type: ignore
577
- object_=_response.json(),
578
- ),
579
- )
580
- return AsyncHttpResponse(response=_response, data=_data)
581
- if _response.status_code == 400:
582
- raise BadRequestError(
583
- headers=dict(_response.headers),
584
- body=typing.cast(
585
- typing.Optional[typing.Any],
586
- parse_obj_as(
587
- type_=typing.Optional[typing.Any], # type: ignore
588
- object_=_response.json(),
589
- ),
590
- ),
591
- )
592
- if _response.status_code == 403:
593
- raise ForbiddenError(
594
- headers=dict(_response.headers),
595
- body=typing.cast(
596
- PermissionDeniedError,
597
- parse_obj_as(
598
- type_=PermissionDeniedError, # type: ignore
599
- object_=_response.json(),
600
- ),
601
- ),
602
- )
603
- if _response.status_code == 404:
604
- raise NotFoundError(
605
- headers=dict(_response.headers),
606
- body=typing.cast(
607
- NotFoundErrorBody,
608
- parse_obj_as(
609
- type_=NotFoundErrorBody, # type: ignore
610
- object_=_response.json(),
611
- ),
612
- ),
613
- )
614
- if _response.status_code == 429:
615
- raise TooManyRequestsError(
616
- headers=dict(_response.headers),
617
- body=typing.cast(
618
- RateLimitError,
619
- parse_obj_as(
620
- type_=RateLimitError, # type: ignore
621
- object_=_response.json(),
622
- ),
623
- ),
624
- )
625
- if _response.status_code == 500:
626
- raise InternalServerError(
627
- headers=dict(_response.headers),
628
- body=typing.cast(
629
- typing.Optional[typing.Any],
630
- parse_obj_as(
631
- type_=typing.Optional[typing.Any], # type: ignore
632
- object_=_response.json(),
633
- ),
634
- ),
635
- )
636
- if _response.status_code == 503:
637
- raise ServiceUnavailableError(
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
- _response_json = _response.json()
648
- except JSONDecodeError:
649
- raise ApiError(
650
- status_code=_response.status_code,
651
- headers=dict(_response.headers),
652
- body=_response.text,
653
- )
654
- raise ApiError(
655
- status_code=_response.status_code,
656
- headers=dict(_response.headers),
657
- body=_response_json,
658
- )
659
-
660
- async def create(
661
- self,
662
- organization_id: str,
663
- project_id: str,
664
- *,
665
- member_id: str,
666
- role: ProjectMembershipsCreateRequestRole,
667
- request_options: typing.Optional[RequestOptions] = None,
668
- ) -> AsyncHttpResponse[ProjectMembershipsCreateResponse]:
669
- """
670
- Parameters
671
- ----------
672
- organization_id : str
673
-
674
- project_id : str
675
-
676
- member_id : str
677
-
678
- role : ProjectMembershipsCreateRequestRole
679
-
680
- request_options : typing.Optional[RequestOptions]
681
- Request-specific configuration.
682
-
683
- Returns
684
- -------
685
- AsyncHttpResponse[ProjectMembershipsCreateResponse]
686
- Success
687
- """
688
- _response = await self._client_wrapper.httpx_client.request(
689
- f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/members",
690
- method="POST",
691
- json={
692
- "memberId": member_id,
693
- "role": role,
694
- },
695
- headers={
696
- "content-type": "application/json",
697
- },
698
- request_options=request_options,
699
- omit=OMIT,
700
- )
701
- try:
702
- if 200 <= _response.status_code < 300:
703
- _data = typing.cast(
704
- ProjectMembershipsCreateResponse,
705
- parse_obj_as(
706
- type_=ProjectMembershipsCreateResponse, # type: ignore
707
- object_=_response.json(),
708
- ),
709
- )
710
- return AsyncHttpResponse(response=_response, data=_data)
711
- if _response.status_code == 400:
712
- raise BadRequestError(
713
- headers=dict(_response.headers),
714
- body=typing.cast(
715
- typing.Optional[typing.Any],
716
- parse_obj_as(
717
- type_=typing.Optional[typing.Any], # type: ignore
718
- object_=_response.json(),
719
- ),
720
- ),
721
- )
722
- if _response.status_code == 403:
723
- raise ForbiddenError(
724
- headers=dict(_response.headers),
725
- body=typing.cast(
726
- PermissionDeniedError,
727
- parse_obj_as(
728
- type_=PermissionDeniedError, # type: ignore
729
- object_=_response.json(),
730
- ),
731
- ),
732
- )
733
- if _response.status_code == 404:
734
- raise NotFoundError(
735
- headers=dict(_response.headers),
736
- body=typing.cast(
737
- NotFoundErrorBody,
738
- parse_obj_as(
739
- type_=NotFoundErrorBody, # type: ignore
740
- object_=_response.json(),
741
- ),
742
- ),
743
- )
744
- if _response.status_code == 409:
745
- raise ConflictError(
746
- headers=dict(_response.headers),
747
- body=typing.cast(
748
- typing.Optional[typing.Any],
749
- parse_obj_as(
750
- type_=typing.Optional[typing.Any], # type: ignore
751
- object_=_response.json(),
752
- ),
753
- ),
754
- )
755
- if _response.status_code == 429:
756
- raise TooManyRequestsError(
757
- headers=dict(_response.headers),
758
- body=typing.cast(
759
- RateLimitError,
760
- parse_obj_as(
761
- type_=RateLimitError, # type: ignore
762
- object_=_response.json(),
763
- ),
764
- ),
765
- )
766
- if _response.status_code == 500:
767
- raise InternalServerError(
768
- headers=dict(_response.headers),
769
- body=typing.cast(
770
- typing.Optional[typing.Any],
771
- parse_obj_as(
772
- type_=typing.Optional[typing.Any], # type: ignore
773
- object_=_response.json(),
774
- ),
775
- ),
776
- )
777
- if _response.status_code == 503:
778
- raise ServiceUnavailableError(
779
- headers=dict(_response.headers),
780
- body=typing.cast(
781
- typing.Optional[typing.Any],
782
- parse_obj_as(
783
- type_=typing.Optional[typing.Any], # type: ignore
784
- object_=_response.json(),
785
- ),
786
- ),
787
- )
788
- _response_json = _response.json()
789
- except JSONDecodeError:
790
- raise ApiError(
791
- status_code=_response.status_code,
792
- headers=dict(_response.headers),
793
- body=_response.text,
794
- )
795
- raise ApiError(
796
- status_code=_response.status_code,
797
- headers=dict(_response.headers),
798
- body=_response_json,
799
- )
800
-
801
- async def delete(
802
- self,
803
- organization_id: str,
804
- project_id: str,
805
- member_id: str,
806
- *,
807
- request_options: typing.Optional[RequestOptions] = None,
808
- ) -> AsyncHttpResponse[None]:
809
- """
810
- Parameters
811
- ----------
812
- organization_id : str
813
-
814
- project_id : str
815
-
816
- member_id : str
817
-
818
- request_options : typing.Optional[RequestOptions]
819
- Request-specific configuration.
820
-
821
- Returns
822
- -------
823
- AsyncHttpResponse[None]
824
- """
825
- _response = await self._client_wrapper.httpx_client.request(
826
- f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/members/{jsonable_encoder(member_id)}",
827
- method="DELETE",
828
- request_options=request_options,
829
- )
830
- try:
831
- if 200 <= _response.status_code < 300:
832
- return AsyncHttpResponse(response=_response, data=None)
833
- if _response.status_code == 400:
834
- raise BadRequestError(
835
- headers=dict(_response.headers),
836
- body=typing.cast(
837
- typing.Optional[typing.Any],
838
- parse_obj_as(
839
- type_=typing.Optional[typing.Any], # type: ignore
840
- object_=_response.json(),
841
- ),
842
- ),
843
- )
844
- if _response.status_code == 403:
845
- raise ForbiddenError(
846
- headers=dict(_response.headers),
847
- body=typing.cast(
848
- PermissionDeniedError,
849
- parse_obj_as(
850
- type_=PermissionDeniedError, # type: ignore
851
- object_=_response.json(),
852
- ),
853
- ),
854
- )
855
- if _response.status_code == 404:
856
- raise NotFoundError(
857
- headers=dict(_response.headers),
858
- body=typing.cast(
859
- NotFoundErrorBody,
860
- parse_obj_as(
861
- type_=NotFoundErrorBody, # type: ignore
862
- object_=_response.json(),
863
- ),
864
- ),
865
- )
866
- if _response.status_code == 429:
867
- raise TooManyRequestsError(
868
- headers=dict(_response.headers),
869
- body=typing.cast(
870
- RateLimitError,
871
- parse_obj_as(
872
- type_=RateLimitError, # type: ignore
873
- object_=_response.json(),
874
- ),
875
- ),
876
- )
877
- if _response.status_code == 500:
878
- raise InternalServerError(
879
- headers=dict(_response.headers),
880
- body=typing.cast(
881
- typing.Optional[typing.Any],
882
- parse_obj_as(
883
- type_=typing.Optional[typing.Any], # type: ignore
884
- object_=_response.json(),
885
- ),
886
- ),
887
- )
888
- if _response.status_code == 503:
889
- raise ServiceUnavailableError(
890
- headers=dict(_response.headers),
891
- body=typing.cast(
892
- typing.Optional[typing.Any],
893
- parse_obj_as(
894
- type_=typing.Optional[typing.Any], # type: ignore
895
- object_=_response.json(),
896
- ),
897
- ),
898
- )
899
- _response_json = _response.json()
900
- except JSONDecodeError:
901
- raise ApiError(
902
- status_code=_response.status_code,
903
- headers=dict(_response.headers),
904
- body=_response.text,
905
- )
906
- raise ApiError(
907
- status_code=_response.status_code,
908
- headers=dict(_response.headers),
909
- body=_response_json,
910
- )
911
-
912
- async def update(
913
- self,
914
- organization_id: str,
915
- project_id: str,
916
- member_id: str,
917
- *,
918
- role: ProjectMembershipsUpdateRequestRole,
919
- request_options: typing.Optional[RequestOptions] = None,
920
- ) -> AsyncHttpResponse[ProjectMembershipsUpdateResponse]:
921
- """
922
- Parameters
923
- ----------
924
- organization_id : str
925
-
926
- project_id : str
927
-
928
- member_id : str
929
-
930
- role : ProjectMembershipsUpdateRequestRole
931
-
932
- request_options : typing.Optional[RequestOptions]
933
- Request-specific configuration.
934
-
935
- Returns
936
- -------
937
- AsyncHttpResponse[ProjectMembershipsUpdateResponse]
938
- Success
939
- """
940
- _response = await self._client_wrapper.httpx_client.request(
941
- f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/members/{jsonable_encoder(member_id)}",
942
- method="PATCH",
943
- json={
944
- "role": role,
945
- },
946
- headers={
947
- "content-type": "application/json",
948
- },
949
- request_options=request_options,
950
- omit=OMIT,
951
- )
952
- try:
953
- if 200 <= _response.status_code < 300:
954
- _data = typing.cast(
955
- ProjectMembershipsUpdateResponse,
956
- parse_obj_as(
957
- type_=ProjectMembershipsUpdateResponse, # type: ignore
958
- object_=_response.json(),
959
- ),
960
- )
961
- return AsyncHttpResponse(response=_response, data=_data)
962
- if _response.status_code == 400:
963
- raise BadRequestError(
964
- headers=dict(_response.headers),
965
- body=typing.cast(
966
- typing.Optional[typing.Any],
967
- parse_obj_as(
968
- type_=typing.Optional[typing.Any], # type: ignore
969
- object_=_response.json(),
970
- ),
971
- ),
972
- )
973
- if _response.status_code == 403:
974
- raise ForbiddenError(
975
- headers=dict(_response.headers),
976
- body=typing.cast(
977
- PermissionDeniedError,
978
- parse_obj_as(
979
- type_=PermissionDeniedError, # type: ignore
980
- object_=_response.json(),
981
- ),
982
- ),
983
- )
984
- if _response.status_code == 404:
985
- raise NotFoundError(
986
- headers=dict(_response.headers),
987
- body=typing.cast(
988
- NotFoundErrorBody,
989
- parse_obj_as(
990
- type_=NotFoundErrorBody, # type: ignore
991
- object_=_response.json(),
992
- ),
993
- ),
994
- )
995
- if _response.status_code == 429:
996
- raise TooManyRequestsError(
997
- headers=dict(_response.headers),
998
- body=typing.cast(
999
- RateLimitError,
1000
- parse_obj_as(
1001
- type_=RateLimitError, # type: ignore
1002
- object_=_response.json(),
1003
- ),
1004
- ),
1005
- )
1006
- if _response.status_code == 500:
1007
- raise InternalServerError(
1008
- headers=dict(_response.headers),
1009
- body=typing.cast(
1010
- typing.Optional[typing.Any],
1011
- parse_obj_as(
1012
- type_=typing.Optional[typing.Any], # type: ignore
1013
- object_=_response.json(),
1014
- ),
1015
- ),
1016
- )
1017
- if _response.status_code == 503:
1018
- raise ServiceUnavailableError(
1019
- headers=dict(_response.headers),
1020
- body=typing.cast(
1021
- typing.Optional[typing.Any],
1022
- parse_obj_as(
1023
- type_=typing.Optional[typing.Any], # type: ignore
1024
- object_=_response.json(),
1025
- ),
1026
- ),
1027
- )
1028
- _response_json = _response.json()
1029
- except JSONDecodeError:
1030
- raise ApiError(
1031
- status_code=_response.status_code,
1032
- headers=dict(_response.headers),
1033
- body=_response.text,
1034
- )
1035
- raise ApiError(
1036
- status_code=_response.status_code,
1037
- headers=dict(_response.headers),
1038
- body=_response_json,
1039
- )