orca-sdk 0.1.1__py3-none-any.whl → 0.1.3__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 (186) hide show
  1. orca_sdk/__init__.py +10 -4
  2. orca_sdk/_shared/__init__.py +10 -0
  3. orca_sdk/_shared/metrics.py +393 -0
  4. orca_sdk/_shared/metrics_test.py +273 -0
  5. orca_sdk/_utils/analysis_ui.py +12 -10
  6. orca_sdk/_utils/analysis_ui_style.css +0 -3
  7. orca_sdk/_utils/auth.py +31 -29
  8. orca_sdk/_utils/data_parsing.py +28 -2
  9. orca_sdk/_utils/data_parsing_test.py +15 -15
  10. orca_sdk/_utils/pagination.py +126 -0
  11. orca_sdk/_utils/pagination_test.py +132 -0
  12. orca_sdk/_utils/prediction_result_ui.py +67 -21
  13. orca_sdk/_utils/tqdm_file_reader.py +12 -0
  14. orca_sdk/_utils/value_parser.py +45 -0
  15. orca_sdk/_utils/value_parser_test.py +39 -0
  16. orca_sdk/async_client.py +3795 -0
  17. orca_sdk/classification_model.py +601 -129
  18. orca_sdk/classification_model_test.py +415 -117
  19. orca_sdk/client.py +3787 -0
  20. orca_sdk/conftest.py +184 -38
  21. orca_sdk/credentials.py +162 -20
  22. orca_sdk/credentials_test.py +100 -16
  23. orca_sdk/datasource.py +268 -68
  24. orca_sdk/datasource_test.py +266 -18
  25. orca_sdk/embedding_model.py +434 -82
  26. orca_sdk/embedding_model_test.py +66 -33
  27. orca_sdk/job.py +343 -0
  28. orca_sdk/job_test.py +108 -0
  29. orca_sdk/memoryset.py +1690 -324
  30. orca_sdk/memoryset_test.py +456 -119
  31. orca_sdk/regression_model.py +694 -0
  32. orca_sdk/regression_model_test.py +378 -0
  33. orca_sdk/telemetry.py +460 -143
  34. orca_sdk/telemetry_test.py +43 -24
  35. {orca_sdk-0.1.1.dist-info → orca_sdk-0.1.3.dist-info}/METADATA +34 -16
  36. orca_sdk-0.1.3.dist-info/RECORD +41 -0
  37. {orca_sdk-0.1.1.dist-info → orca_sdk-0.1.3.dist-info}/WHEEL +1 -1
  38. orca_sdk/_generated_api_client/__init__.py +0 -3
  39. orca_sdk/_generated_api_client/api/__init__.py +0 -193
  40. orca_sdk/_generated_api_client/api/auth/__init__.py +0 -0
  41. orca_sdk/_generated_api_client/api/auth/check_authentication_auth_get.py +0 -128
  42. orca_sdk/_generated_api_client/api/auth/create_api_key_auth_api_key_post.py +0 -170
  43. orca_sdk/_generated_api_client/api/auth/delete_api_key_auth_api_key_name_or_id_delete.py +0 -156
  44. orca_sdk/_generated_api_client/api/auth/delete_org_auth_org_delete.py +0 -130
  45. orca_sdk/_generated_api_client/api/auth/list_api_keys_auth_api_key_get.py +0 -127
  46. orca_sdk/_generated_api_client/api/classification_model/__init__.py +0 -0
  47. orca_sdk/_generated_api_client/api/classification_model/create_evaluation_classification_model_model_name_or_id_evaluation_post.py +0 -183
  48. orca_sdk/_generated_api_client/api/classification_model/create_model_classification_model_post.py +0 -170
  49. orca_sdk/_generated_api_client/api/classification_model/delete_evaluation_classification_model_model_name_or_id_evaluation_task_id_delete.py +0 -168
  50. orca_sdk/_generated_api_client/api/classification_model/delete_model_classification_model_name_or_id_delete.py +0 -154
  51. orca_sdk/_generated_api_client/api/classification_model/get_evaluation_classification_model_model_name_or_id_evaluation_task_id_get.py +0 -170
  52. orca_sdk/_generated_api_client/api/classification_model/get_model_classification_model_name_or_id_get.py +0 -156
  53. orca_sdk/_generated_api_client/api/classification_model/list_evaluations_classification_model_model_name_or_id_evaluation_get.py +0 -161
  54. orca_sdk/_generated_api_client/api/classification_model/list_models_classification_model_get.py +0 -127
  55. orca_sdk/_generated_api_client/api/classification_model/predict_gpu_classification_model_name_or_id_prediction_post.py +0 -190
  56. orca_sdk/_generated_api_client/api/datasource/__init__.py +0 -0
  57. orca_sdk/_generated_api_client/api/datasource/create_datasource_datasource_post.py +0 -167
  58. orca_sdk/_generated_api_client/api/datasource/delete_datasource_datasource_name_or_id_delete.py +0 -156
  59. orca_sdk/_generated_api_client/api/datasource/get_datasource_datasource_name_or_id_get.py +0 -156
  60. orca_sdk/_generated_api_client/api/datasource/list_datasources_datasource_get.py +0 -127
  61. orca_sdk/_generated_api_client/api/default/__init__.py +0 -0
  62. orca_sdk/_generated_api_client/api/default/healthcheck_get.py +0 -118
  63. orca_sdk/_generated_api_client/api/default/healthcheck_gpu_get.py +0 -118
  64. orca_sdk/_generated_api_client/api/finetuned_embedding_model/__init__.py +0 -0
  65. orca_sdk/_generated_api_client/api/finetuned_embedding_model/create_finetuned_embedding_model_finetuned_embedding_model_post.py +0 -168
  66. orca_sdk/_generated_api_client/api/finetuned_embedding_model/delete_finetuned_embedding_model_finetuned_embedding_model_name_or_id_delete.py +0 -156
  67. orca_sdk/_generated_api_client/api/finetuned_embedding_model/embed_with_finetuned_model_gpu_finetuned_embedding_model_name_or_id_embedding_post.py +0 -189
  68. orca_sdk/_generated_api_client/api/finetuned_embedding_model/get_finetuned_embedding_model_finetuned_embedding_model_name_or_id_get.py +0 -156
  69. orca_sdk/_generated_api_client/api/finetuned_embedding_model/list_finetuned_embedding_models_finetuned_embedding_model_get.py +0 -127
  70. orca_sdk/_generated_api_client/api/memoryset/__init__.py +0 -0
  71. orca_sdk/_generated_api_client/api/memoryset/clone_memoryset_memoryset_name_or_id_clone_post.py +0 -181
  72. orca_sdk/_generated_api_client/api/memoryset/create_analysis_memoryset_name_or_id_analysis_post.py +0 -183
  73. orca_sdk/_generated_api_client/api/memoryset/create_memoryset_memoryset_post.py +0 -168
  74. orca_sdk/_generated_api_client/api/memoryset/delete_memories_memoryset_name_or_id_memories_delete_post.py +0 -181
  75. orca_sdk/_generated_api_client/api/memoryset/delete_memory_memoryset_name_or_id_memory_memory_id_delete.py +0 -167
  76. orca_sdk/_generated_api_client/api/memoryset/delete_memoryset_memoryset_name_or_id_delete.py +0 -156
  77. orca_sdk/_generated_api_client/api/memoryset/get_analysis_memoryset_name_or_id_analysis_analysis_task_id_get.py +0 -169
  78. orca_sdk/_generated_api_client/api/memoryset/get_memories_memoryset_name_or_id_memories_get_post.py +0 -188
  79. orca_sdk/_generated_api_client/api/memoryset/get_memory_memoryset_name_or_id_memory_memory_id_get.py +0 -169
  80. orca_sdk/_generated_api_client/api/memoryset/get_memoryset_memoryset_name_or_id_get.py +0 -156
  81. orca_sdk/_generated_api_client/api/memoryset/insert_memories_gpu_memoryset_name_or_id_memory_post.py +0 -184
  82. orca_sdk/_generated_api_client/api/memoryset/list_analyses_memoryset_name_or_id_analysis_get.py +0 -260
  83. orca_sdk/_generated_api_client/api/memoryset/list_memorysets_memoryset_get.py +0 -127
  84. orca_sdk/_generated_api_client/api/memoryset/memoryset_lookup_gpu_memoryset_name_or_id_lookup_post.py +0 -193
  85. orca_sdk/_generated_api_client/api/memoryset/query_memoryset_memoryset_name_or_id_memories_post.py +0 -188
  86. orca_sdk/_generated_api_client/api/memoryset/update_memories_gpu_memoryset_name_or_id_memories_patch.py +0 -191
  87. orca_sdk/_generated_api_client/api/memoryset/update_memory_gpu_memoryset_name_or_id_memory_patch.py +0 -187
  88. orca_sdk/_generated_api_client/api/pretrained_embedding_model/__init__.py +0 -0
  89. orca_sdk/_generated_api_client/api/pretrained_embedding_model/embed_with_pretrained_model_gpu_pretrained_embedding_model_model_name_embedding_post.py +0 -188
  90. orca_sdk/_generated_api_client/api/pretrained_embedding_model/get_pretrained_embedding_model_pretrained_embedding_model_model_name_get.py +0 -157
  91. orca_sdk/_generated_api_client/api/pretrained_embedding_model/list_pretrained_embedding_models_pretrained_embedding_model_get.py +0 -127
  92. orca_sdk/_generated_api_client/api/task/__init__.py +0 -0
  93. orca_sdk/_generated_api_client/api/task/abort_task_task_task_id_abort_delete.py +0 -154
  94. orca_sdk/_generated_api_client/api/task/get_task_status_task_task_id_status_get.py +0 -156
  95. orca_sdk/_generated_api_client/api/task/list_tasks_task_get.py +0 -243
  96. orca_sdk/_generated_api_client/api/telemetry/__init__.py +0 -0
  97. orca_sdk/_generated_api_client/api/telemetry/drop_feedback_category_with_data_telemetry_feedback_category_name_or_id_delete.py +0 -162
  98. orca_sdk/_generated_api_client/api/telemetry/get_feedback_category_telemetry_feedback_category_name_or_id_get.py +0 -156
  99. orca_sdk/_generated_api_client/api/telemetry/get_prediction_telemetry_prediction_prediction_id_get.py +0 -157
  100. orca_sdk/_generated_api_client/api/telemetry/list_feedback_categories_telemetry_feedback_category_get.py +0 -127
  101. orca_sdk/_generated_api_client/api/telemetry/list_predictions_telemetry_prediction_post.py +0 -175
  102. orca_sdk/_generated_api_client/api/telemetry/record_prediction_feedback_telemetry_prediction_feedback_put.py +0 -171
  103. orca_sdk/_generated_api_client/api/telemetry/update_prediction_telemetry_prediction_prediction_id_patch.py +0 -181
  104. orca_sdk/_generated_api_client/client.py +0 -216
  105. orca_sdk/_generated_api_client/errors.py +0 -38
  106. orca_sdk/_generated_api_client/models/__init__.py +0 -159
  107. orca_sdk/_generated_api_client/models/analyze_neighbor_labels_result.py +0 -84
  108. orca_sdk/_generated_api_client/models/api_key_metadata.py +0 -118
  109. orca_sdk/_generated_api_client/models/base_model.py +0 -55
  110. orca_sdk/_generated_api_client/models/body_create_datasource_datasource_post.py +0 -176
  111. orca_sdk/_generated_api_client/models/classification_evaluation_result.py +0 -114
  112. orca_sdk/_generated_api_client/models/clone_labeled_memoryset_request.py +0 -150
  113. orca_sdk/_generated_api_client/models/column_info.py +0 -114
  114. orca_sdk/_generated_api_client/models/column_type.py +0 -14
  115. orca_sdk/_generated_api_client/models/conflict_error_response.py +0 -80
  116. orca_sdk/_generated_api_client/models/create_api_key_request.py +0 -99
  117. orca_sdk/_generated_api_client/models/create_api_key_response.py +0 -126
  118. orca_sdk/_generated_api_client/models/create_labeled_memoryset_request.py +0 -259
  119. orca_sdk/_generated_api_client/models/create_rac_model_request.py +0 -209
  120. orca_sdk/_generated_api_client/models/datasource_metadata.py +0 -142
  121. orca_sdk/_generated_api_client/models/delete_memories_request.py +0 -70
  122. orca_sdk/_generated_api_client/models/embed_request.py +0 -127
  123. orca_sdk/_generated_api_client/models/embedding_finetuning_method.py +0 -9
  124. orca_sdk/_generated_api_client/models/evaluation_request.py +0 -180
  125. orca_sdk/_generated_api_client/models/evaluation_response.py +0 -140
  126. orca_sdk/_generated_api_client/models/feedback_type.py +0 -9
  127. orca_sdk/_generated_api_client/models/field_validation_error.py +0 -103
  128. orca_sdk/_generated_api_client/models/filter_item.py +0 -231
  129. orca_sdk/_generated_api_client/models/filter_item_field_type_0_item.py +0 -15
  130. orca_sdk/_generated_api_client/models/filter_item_field_type_2_item_type_1.py +0 -16
  131. orca_sdk/_generated_api_client/models/filter_item_op.py +0 -16
  132. orca_sdk/_generated_api_client/models/find_duplicates_analysis_result.py +0 -70
  133. orca_sdk/_generated_api_client/models/finetune_embedding_model_request.py +0 -259
  134. orca_sdk/_generated_api_client/models/finetune_embedding_model_request_training_args.py +0 -66
  135. orca_sdk/_generated_api_client/models/finetuned_embedding_model_metadata.py +0 -166
  136. orca_sdk/_generated_api_client/models/get_memories_request.py +0 -70
  137. orca_sdk/_generated_api_client/models/internal_server_error_response.py +0 -80
  138. orca_sdk/_generated_api_client/models/label_class_metrics.py +0 -108
  139. orca_sdk/_generated_api_client/models/label_prediction_memory_lookup.py +0 -274
  140. orca_sdk/_generated_api_client/models/label_prediction_memory_lookup_metadata.py +0 -68
  141. orca_sdk/_generated_api_client/models/label_prediction_result.py +0 -101
  142. orca_sdk/_generated_api_client/models/label_prediction_with_memories_and_feedback.py +0 -232
  143. orca_sdk/_generated_api_client/models/labeled_memory.py +0 -197
  144. orca_sdk/_generated_api_client/models/labeled_memory_insert.py +0 -108
  145. orca_sdk/_generated_api_client/models/labeled_memory_insert_metadata.py +0 -68
  146. orca_sdk/_generated_api_client/models/labeled_memory_lookup.py +0 -258
  147. orca_sdk/_generated_api_client/models/labeled_memory_lookup_metadata.py +0 -68
  148. orca_sdk/_generated_api_client/models/labeled_memory_metadata.py +0 -68
  149. orca_sdk/_generated_api_client/models/labeled_memory_metrics.py +0 -277
  150. orca_sdk/_generated_api_client/models/labeled_memory_update.py +0 -171
  151. orca_sdk/_generated_api_client/models/labeled_memory_update_metadata_type_0.py +0 -68
  152. orca_sdk/_generated_api_client/models/labeled_memoryset_metadata.py +0 -195
  153. orca_sdk/_generated_api_client/models/list_analyses_memoryset_name_or_id_analysis_get_type_type_0.py +0 -9
  154. orca_sdk/_generated_api_client/models/list_memories_request.py +0 -104
  155. orca_sdk/_generated_api_client/models/list_predictions_request.py +0 -234
  156. orca_sdk/_generated_api_client/models/list_predictions_request_sort_item_item_type_0.py +0 -9
  157. orca_sdk/_generated_api_client/models/list_predictions_request_sort_item_item_type_1.py +0 -9
  158. orca_sdk/_generated_api_client/models/lookup_request.py +0 -81
  159. orca_sdk/_generated_api_client/models/memoryset_analysis_request.py +0 -83
  160. orca_sdk/_generated_api_client/models/memoryset_analysis_request_type.py +0 -9
  161. orca_sdk/_generated_api_client/models/memoryset_analysis_response.py +0 -180
  162. orca_sdk/_generated_api_client/models/memoryset_analysis_response_config.py +0 -66
  163. orca_sdk/_generated_api_client/models/memoryset_analysis_response_type.py +0 -9
  164. orca_sdk/_generated_api_client/models/not_found_error_response.py +0 -100
  165. orca_sdk/_generated_api_client/models/not_found_error_response_resource_type_0.py +0 -20
  166. orca_sdk/_generated_api_client/models/prediction_feedback.py +0 -157
  167. orca_sdk/_generated_api_client/models/prediction_feedback_category.py +0 -115
  168. orca_sdk/_generated_api_client/models/prediction_feedback_request.py +0 -122
  169. orca_sdk/_generated_api_client/models/prediction_feedback_result.py +0 -102
  170. orca_sdk/_generated_api_client/models/prediction_request.py +0 -169
  171. orca_sdk/_generated_api_client/models/pretrained_embedding_model_metadata.py +0 -97
  172. orca_sdk/_generated_api_client/models/pretrained_embedding_model_name.py +0 -11
  173. orca_sdk/_generated_api_client/models/rac_head_type.py +0 -11
  174. orca_sdk/_generated_api_client/models/rac_model_metadata.py +0 -191
  175. orca_sdk/_generated_api_client/models/service_unavailable_error_response.py +0 -80
  176. orca_sdk/_generated_api_client/models/task.py +0 -198
  177. orca_sdk/_generated_api_client/models/task_status.py +0 -14
  178. orca_sdk/_generated_api_client/models/task_status_info.py +0 -133
  179. orca_sdk/_generated_api_client/models/unauthenticated_error_response.py +0 -72
  180. orca_sdk/_generated_api_client/models/unauthorized_error_response.py +0 -80
  181. orca_sdk/_generated_api_client/models/unprocessable_input_error_response.py +0 -94
  182. orca_sdk/_generated_api_client/models/update_prediction_request.py +0 -93
  183. orca_sdk/_generated_api_client/py.typed +0 -1
  184. orca_sdk/_generated_api_client/types.py +0 -56
  185. orca_sdk/_utils/task.py +0 -73
  186. orca_sdk-0.1.1.dist-info/RECORD +0 -175
@@ -1,171 +0,0 @@
1
- """
2
- This file is generated by the openapi-python-client tool via the generate_api_client.py script
3
-
4
- It is a customized template from the openapi-python-client tool's default template:
5
- https://github.com/openapi-generators/openapi-python-client/blob/861ef5622f10fc96d240dc9becb0edf94e61446c/openapi_python_client/templates/endpoint_module.py.jinja
6
-
7
- The main changes are:
8
- - Update the API call responses to either return the successful response type or raise an error by:
9
- - Updating the _parse_response function to raise an error if the response status code is not in the 2xx range
10
- - Inject a client into every method via a context manager
11
- """
12
-
13
- from http import HTTPStatus
14
- from typing import Any, Dict, List
15
-
16
- import httpx
17
-
18
- from ...client import _client_context
19
- from ...errors import get_error_for_response
20
- from ...models.prediction_feedback_request import PredictionFeedbackRequest
21
- from ...models.prediction_feedback_result import PredictionFeedbackResult
22
- from ...types import Response
23
-
24
-
25
- def _get_kwargs(
26
- *,
27
- body: List["PredictionFeedbackRequest"],
28
- ) -> dict[str, Any]:
29
- headers: Dict[str, Any] = {}
30
-
31
- _kwargs: dict[str, Any] = {
32
- "method": "put",
33
- "url": "/telemetry/prediction/feedback",
34
- }
35
-
36
- _body = []
37
- for body_item_data in body:
38
- body_item = body_item_data.to_dict()
39
- _body.append(body_item)
40
-
41
- _kwargs["json"] = _body
42
- headers["Content-Type"] = "application/json"
43
-
44
- _kwargs["headers"] = headers
45
- return _kwargs
46
-
47
-
48
- def _parse_response(*, response: httpx.Response) -> PredictionFeedbackResult:
49
- if response.status_code == 200:
50
- response_200 = PredictionFeedbackResult.from_dict(response.json())
51
-
52
- return response_200
53
- if response.status_code == 401:
54
- raise get_error_for_response(response)
55
- if response.status_code == 500:
56
- raise get_error_for_response(response)
57
- if response.status_code == 503:
58
- raise get_error_for_response(response)
59
- if response.status_code == 422:
60
- raise get_error_for_response(response)
61
-
62
-
63
- def _build_response(*, response: httpx.Response) -> Response[PredictionFeedbackResult]:
64
- return Response(
65
- status_code=HTTPStatus(response.status_code),
66
- content=response.content,
67
- headers=response.headers,
68
- parsed=_parse_response(response=response),
69
- )
70
-
71
-
72
- def sync_detailed(
73
- *,
74
- body: List["PredictionFeedbackRequest"],
75
- ) -> Response[PredictionFeedbackResult]:
76
- """Record Prediction Feedback
77
-
78
- Args:
79
- body (List['PredictionFeedbackRequest']):
80
-
81
- Raises:
82
- errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
83
- httpx.TimeoutException: If the request takes longer than Client.timeout.
84
-
85
- Returns:
86
- Response[PredictionFeedbackResult]
87
- """
88
-
89
- kwargs = _get_kwargs(
90
- body=body,
91
- )
92
-
93
- with _client_context() as client:
94
- response = client.get_httpx_client().request(
95
- **kwargs,
96
- )
97
-
98
- return _build_response(response=response)
99
-
100
-
101
- def sync(
102
- *,
103
- body: List["PredictionFeedbackRequest"],
104
- ) -> PredictionFeedbackResult:
105
- """Record Prediction Feedback
106
-
107
- Args:
108
- body (List['PredictionFeedbackRequest']):
109
-
110
- Raises:
111
- errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
112
- httpx.TimeoutException: If the request takes longer than Client.timeout.
113
-
114
- Returns:
115
- PredictionFeedbackResult
116
- """
117
-
118
- return sync_detailed(
119
- body=body,
120
- ).parsed
121
-
122
-
123
- async def asyncio_detailed(
124
- *,
125
- body: List["PredictionFeedbackRequest"],
126
- ) -> Response[PredictionFeedbackResult]:
127
- """Record Prediction Feedback
128
-
129
- Args:
130
- body (List['PredictionFeedbackRequest']):
131
-
132
- Raises:
133
- errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
134
- httpx.TimeoutException: If the request takes longer than Client.timeout.
135
-
136
- Returns:
137
- Response[PredictionFeedbackResult]
138
- """
139
-
140
- kwargs = _get_kwargs(
141
- body=body,
142
- )
143
-
144
- with _client_context() as client:
145
- response = await client.get_async_httpx_client().request(**kwargs)
146
-
147
- return _build_response(response=response)
148
-
149
-
150
- async def asyncio(
151
- *,
152
- body: List["PredictionFeedbackRequest"],
153
- ) -> PredictionFeedbackResult:
154
- """Record Prediction Feedback
155
-
156
- Args:
157
- body (List['PredictionFeedbackRequest']):
158
-
159
- Raises:
160
- errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
161
- httpx.TimeoutException: If the request takes longer than Client.timeout.
162
-
163
- Returns:
164
- PredictionFeedbackResult
165
- """
166
-
167
- return (
168
- await asyncio_detailed(
169
- body=body,
170
- )
171
- ).parsed
@@ -1,181 +0,0 @@
1
- """
2
- This file is generated by the openapi-python-client tool via the generate_api_client.py script
3
-
4
- It is a customized template from the openapi-python-client tool's default template:
5
- https://github.com/openapi-generators/openapi-python-client/blob/861ef5622f10fc96d240dc9becb0edf94e61446c/openapi_python_client/templates/endpoint_module.py.jinja
6
-
7
- The main changes are:
8
- - Update the API call responses to either return the successful response type or raise an error by:
9
- - Updating the _parse_response function to raise an error if the response status code is not in the 2xx range
10
- - Inject a client into every method via a context manager
11
- """
12
-
13
- from http import HTTPStatus
14
- from typing import Any, Dict
15
-
16
- import httpx
17
-
18
- from ...client import _client_context
19
- from ...errors import get_error_for_response
20
- from ...models.update_prediction_request import UpdatePredictionRequest
21
- from ...types import Response
22
-
23
-
24
- def _get_kwargs(
25
- prediction_id: str,
26
- *,
27
- body: UpdatePredictionRequest,
28
- ) -> dict[str, Any]:
29
- headers: Dict[str, Any] = {}
30
-
31
- _kwargs: dict[str, Any] = {
32
- "method": "patch",
33
- "url": f"/telemetry/prediction/{prediction_id}",
34
- }
35
-
36
- _body = body.to_dict()
37
-
38
- _kwargs["json"] = _body
39
- headers["Content-Type"] = "application/json"
40
-
41
- _kwargs["headers"] = headers
42
- return _kwargs
43
-
44
-
45
- def _parse_response(*, response: httpx.Response) -> None:
46
- if response.status_code == 200:
47
- response_200 = response.json()
48
- return response_200
49
- if response.status_code == 401:
50
- raise get_error_for_response(response)
51
- if response.status_code == 500:
52
- raise get_error_for_response(response)
53
- if response.status_code == 503:
54
- raise get_error_for_response(response)
55
- if response.status_code == 422:
56
- raise get_error_for_response(response)
57
- if response.status_code == 404:
58
- raise get_error_for_response(response)
59
-
60
-
61
- def _build_response(*, response: httpx.Response) -> Response[None]:
62
- return Response(
63
- status_code=HTTPStatus(response.status_code),
64
- content=response.content,
65
- headers=response.headers,
66
- parsed=_parse_response(response=response),
67
- )
68
-
69
-
70
- def sync_detailed(
71
- prediction_id: str,
72
- *,
73
- body: UpdatePredictionRequest,
74
- ) -> Response[None]:
75
- """Update Prediction
76
-
77
- Args:
78
- prediction_id (str):
79
- body (UpdatePredictionRequest):
80
-
81
- Raises:
82
- errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
83
- httpx.TimeoutException: If the request takes longer than Client.timeout.
84
-
85
- Returns:
86
- Response[None]
87
- """
88
-
89
- kwargs = _get_kwargs(
90
- prediction_id=prediction_id,
91
- body=body,
92
- )
93
-
94
- with _client_context() as client:
95
- response = client.get_httpx_client().request(
96
- **kwargs,
97
- )
98
-
99
- return _build_response(response=response)
100
-
101
-
102
- def sync(
103
- prediction_id: str,
104
- *,
105
- body: UpdatePredictionRequest,
106
- ) -> None:
107
- """Update Prediction
108
-
109
- Args:
110
- prediction_id (str):
111
- body (UpdatePredictionRequest):
112
-
113
- Raises:
114
- errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
115
- httpx.TimeoutException: If the request takes longer than Client.timeout.
116
-
117
- Returns:
118
- None
119
- """
120
-
121
- return sync_detailed(
122
- prediction_id=prediction_id,
123
- body=body,
124
- ).parsed
125
-
126
-
127
- async def asyncio_detailed(
128
- prediction_id: str,
129
- *,
130
- body: UpdatePredictionRequest,
131
- ) -> Response[None]:
132
- """Update Prediction
133
-
134
- Args:
135
- prediction_id (str):
136
- body (UpdatePredictionRequest):
137
-
138
- Raises:
139
- errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
140
- httpx.TimeoutException: If the request takes longer than Client.timeout.
141
-
142
- Returns:
143
- Response[None]
144
- """
145
-
146
- kwargs = _get_kwargs(
147
- prediction_id=prediction_id,
148
- body=body,
149
- )
150
-
151
- with _client_context() as client:
152
- response = await client.get_async_httpx_client().request(**kwargs)
153
-
154
- return _build_response(response=response)
155
-
156
-
157
- async def asyncio(
158
- prediction_id: str,
159
- *,
160
- body: UpdatePredictionRequest,
161
- ) -> None:
162
- """Update Prediction
163
-
164
- Args:
165
- prediction_id (str):
166
- body (UpdatePredictionRequest):
167
-
168
- Raises:
169
- errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
170
- httpx.TimeoutException: If the request takes longer than Client.timeout.
171
-
172
- Returns:
173
- None
174
- """
175
-
176
- return (
177
- await asyncio_detailed(
178
- prediction_id=prediction_id,
179
- body=body,
180
- )
181
- ).parsed
@@ -1,216 +0,0 @@
1
- """
2
- This file is generated by the openapi-python-client tool via the generate_api_client.py script
3
-
4
- It is a customized template from the openapi-python-client tool's default template:
5
- https://github.com/openapi-generators/openapi-python-client/blob/5cfe4e1d594951725844ea470fc9d61f40c08093/openapi_python_client/templates/client.py.jinja
6
-
7
- The main changes are:
8
- - add a lazy initialized global client singleton that is injected into every api method via a context manager
9
- - add methods for setting headers and base URL on the global client singleton
10
- """
11
-
12
- import os
13
- import ssl
14
- from contextlib import contextmanager
15
- from typing import Any, Optional, Union
16
-
17
- import httpx
18
- from attrs import define, evolve, field
19
-
20
-
21
- @define
22
- class Client:
23
- """A class for keeping track of data related to the API
24
-
25
- The following are accepted as keyword arguments and will be used to construct httpx Clients internally:
26
-
27
- ``base_url``: The base URL for the API, all requests are made to a relative path to this URL
28
-
29
- ``cookies``: A dictionary of cookies to be sent with every request
30
-
31
- ``headers``: A dictionary of headers to be sent with every request
32
-
33
- ``timeout``: The maximum amount of a time a request can take. API functions will raise
34
- httpx.TimeoutException if this is exceeded.
35
-
36
- ``verify_ssl``: Whether or not to verify the SSL certificate of the API server. This should be True in production,
37
- but can be set to False for testing purposes.
38
-
39
- ``follow_redirects``: Whether or not to follow redirects. Default value is False.
40
-
41
- ``httpx_args``: A dictionary of additional arguments to be passed to the ``httpx.Client`` and ``httpx.AsyncClient`` constructor.
42
-
43
-
44
- Attributes:
45
- raise_on_unexpected_status: Whether or not to raise an errors.UnexpectedStatus if the API returns a
46
- status code that was not documented in the source OpenAPI document. Can also be provided as a keyword
47
- argument to the constructor.
48
- """
49
-
50
- raise_on_unexpected_status: bool = field(default=False, kw_only=True)
51
- _base_url: str = field(alias="base_url")
52
- _cookies: dict[str, str] = field(factory=dict, kw_only=True, alias="cookies")
53
- _headers: dict[str, str] = field(factory=dict, kw_only=True, alias="headers")
54
- _timeout: Optional[httpx.Timeout] = field(default=None, kw_only=True, alias="timeout")
55
- _verify_ssl: Union[str, bool, ssl.SSLContext] = field(default=True, kw_only=True, alias="verify_ssl")
56
- _follow_redirects: bool = field(default=False, kw_only=True, alias="follow_redirects")
57
- _httpx_args: dict[str, Any] = field(factory=dict, kw_only=True, alias="httpx_args")
58
- _client: Optional[httpx.Client] = field(default=None, init=False)
59
- _async_client: Optional[httpx.AsyncClient] = field(default=None, init=False)
60
-
61
- def with_headers(self, headers: dict[str, str]) -> "Client":
62
- """Get a new client matching this one with additional headers"""
63
- if self._client is not None:
64
- self._client.headers.update(headers)
65
- if self._async_client is not None:
66
- self._async_client.headers.update(headers)
67
- return evolve(self, headers={**self._headers, **headers})
68
-
69
- def with_cookies(self, cookies: dict[str, str]) -> "Client":
70
- """Get a new client matching this one with additional cookies"""
71
- if self._client is not None:
72
- self._client.cookies.update(cookies)
73
- if self._async_client is not None:
74
- self._async_client.cookies.update(cookies)
75
- return evolve(self, cookies={**self._cookies, **cookies})
76
-
77
- def with_timeout(self, timeout: httpx.Timeout) -> "Client":
78
- """Get a new client matching this one with a new timeout (in seconds)"""
79
- if self._client is not None:
80
- self._client.timeout = timeout
81
- if self._async_client is not None:
82
- self._async_client.timeout = timeout
83
- return evolve(self, timeout=timeout)
84
-
85
- def set_httpx_client(self, client: httpx.Client) -> "Client":
86
- """Manually set the underlying httpx.Client
87
-
88
- **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout.
89
- """
90
- self._client = client
91
- return self
92
-
93
- def get_httpx_client(self) -> httpx.Client:
94
- """Get the underlying httpx.Client, constructing a new one if not previously set"""
95
- if self._client is None:
96
- self._client = httpx.Client(
97
- base_url=self._base_url,
98
- cookies=self._cookies,
99
- headers=self._headers,
100
- timeout=self._timeout,
101
- verify=self._verify_ssl,
102
- follow_redirects=self._follow_redirects,
103
- **self._httpx_args,
104
- )
105
- return self._client
106
-
107
- def __enter__(self) -> "Client":
108
- """Enter a context manager for self.client—you cannot enter twice (see httpx docs)"""
109
- self.get_httpx_client().__enter__()
110
- return self
111
-
112
- def __exit__(self, *args: Any, **kwargs: Any) -> None:
113
- """Exit a context manager for internal httpx.Client (see httpx docs)"""
114
- self.get_httpx_client().__exit__(*args, **kwargs)
115
-
116
- def set_async_httpx_client(self, async_client: httpx.AsyncClient) -> "Client":
117
- """Manually the underlying httpx.AsyncClient
118
-
119
- **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout.
120
- """
121
- self._async_client = async_client
122
- return self
123
-
124
- def get_async_httpx_client(self) -> httpx.AsyncClient:
125
- """Get the underlying httpx.AsyncClient, constructing a new one if not previously set"""
126
- if self._async_client is None:
127
- self._async_client = httpx.AsyncClient(
128
- base_url=self._base_url,
129
- cookies=self._cookies,
130
- headers=self._headers,
131
- timeout=self._timeout,
132
- verify=self._verify_ssl,
133
- follow_redirects=self._follow_redirects,
134
- **self._httpx_args,
135
- )
136
- return self._async_client
137
-
138
- async def __aenter__(self) -> "Client":
139
- """Enter a context manager for underlying httpx.AsyncClient—you cannot enter twice (see httpx docs)"""
140
- await self.get_async_httpx_client().__aenter__()
141
- return self
142
-
143
- async def __aexit__(self, *args: Any, **kwargs: Any) -> None:
144
- """Exit a context manager for underlying httpx.AsyncClient (see httpx docs)"""
145
- await self.get_async_httpx_client().__aexit__(*args, **kwargs)
146
-
147
-
148
- # this must be initialized lazily to ensure that the environment variables are set
149
- _client: Optional["Client"] = None
150
-
151
-
152
- def get_base_url():
153
- """Get the base URL for the global client singleton"""
154
- global _client
155
- if _client is not None:
156
- return _client._base_url
157
- return os.environ.get("ORCA_API_URL", "https://api.orcadb.ai/")
158
-
159
-
160
- def get_headers():
161
- """Get the headers for the global client singleton"""
162
- global _client
163
- if _client is not None:
164
- return _client._headers
165
- headers = {}
166
- api_key = os.environ.get("ORCA_API_KEY")
167
- if api_key is not None:
168
- headers["Api-Key"] = api_key
169
- return headers
170
-
171
-
172
- def get_client():
173
- """Get the global client singleton"""
174
- global _client
175
- if _client is None:
176
- _client = Client(base_url=get_base_url(), headers=get_headers())
177
- return _client
178
-
179
-
180
- def set_headers(headers: dict[str, str]):
181
- """Set the headers for the global client singleton"""
182
- global _client
183
- _client = Client(base_url=get_base_url(), headers=headers)
184
- return _client
185
-
186
-
187
- def set_base_url(base_url: str):
188
- """Set the base URL for the global client singleton"""
189
- global _client
190
- _client = Client(base_url=base_url, headers=_client._headers if _client is not None else {})
191
- return _client
192
-
193
-
194
- @contextmanager
195
- def headers_context(headers: dict[str, str]):
196
- """Set the headers for the global client singleton within a context manager"""
197
- global _client
198
- old_client = get_client()
199
- set_headers(headers=headers)
200
- yield
201
- _client = old_client
202
-
203
-
204
- @contextmanager
205
- def base_url_context(base_url: str):
206
- """Set the base URL for the global client singleton within a context manager"""
207
- global _client
208
- old_client = get_client()
209
- set_base_url(base_url=base_url)
210
- yield
211
- _client = old_client
212
-
213
-
214
- @contextmanager
215
- def _client_context():
216
- yield get_client()
@@ -1,38 +0,0 @@
1
- """
2
- This file is generated by the openapi-python-client tool via the generate_api_client.py script
3
-
4
- It is a customized template from the openapi-python-client tool's default template:
5
- https://github.com/openapi-generators/openapi-python-client/blob/861ef5622f10fc96d240dc9becb0edf94e61446c/openapi_python_client/templates/errors.py.jinja
6
-
7
- The main change is:
8
- - Returning the appropriate python exception for Orca API's error responses
9
- """
10
-
11
- import httpx
12
-
13
-
14
- def get_error_for_response(response: httpx.Response):
15
- """Raise an appropriate exception based on the response status code and content"""
16
- if response.status_code == 401:
17
- return ValueError("Invalid API key")
18
- elif response.status_code == 403:
19
- return PermissionError(response.json()["reason"])
20
- elif response.status_code == 404:
21
- resource = response.json()["resource"]
22
- if resource is not None:
23
- return LookupError(f"The {resource} you are looking for does not exist")
24
- else:
25
- return RuntimeError(f"Unknown API route: {response.url}")
26
- elif response.status_code == 405:
27
- return RuntimeError(f"Unknown method {response.request.method} for API route: {response.url}")
28
- elif response.status_code == 409:
29
- return RuntimeError(response.json()["constraint"])
30
- elif response.status_code == 422:
31
- issues = [f"{issue['loc'][-1]}: {issue['msg']}" for issue in response.json()["validation_issues"]]
32
- return ValueError("Invalid input:\n\t" + "\n\t".join(issues))
33
- elif response.status_code == 500:
34
- return RuntimeError(f"Unexpected server error: {response.json()['message']}")
35
- elif response.status_code == 503:
36
- return RuntimeError("Orca API is currently unavailable, please try again later")
37
- else:
38
- return RuntimeError(f"Unexpected status code: {response.status_code}")