orca-sdk 0.1.1__py3-none-any.whl → 0.1.2__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 (185) 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 +27 -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/classification_model.py +439 -129
  17. orca_sdk/classification_model_test.py +334 -104
  18. orca_sdk/client.py +3747 -0
  19. orca_sdk/conftest.py +164 -19
  20. orca_sdk/credentials.py +120 -18
  21. orca_sdk/credentials_test.py +20 -0
  22. orca_sdk/datasource.py +259 -68
  23. orca_sdk/datasource_test.py +242 -0
  24. orca_sdk/embedding_model.py +425 -82
  25. orca_sdk/embedding_model_test.py +39 -13
  26. orca_sdk/job.py +337 -0
  27. orca_sdk/job_test.py +108 -0
  28. orca_sdk/memoryset.py +1341 -305
  29. orca_sdk/memoryset_test.py +350 -111
  30. orca_sdk/regression_model.py +684 -0
  31. orca_sdk/regression_model_test.py +369 -0
  32. orca_sdk/telemetry.py +449 -143
  33. orca_sdk/telemetry_test.py +43 -24
  34. {orca_sdk-0.1.1.dist-info → orca_sdk-0.1.2.dist-info}/METADATA +34 -16
  35. orca_sdk-0.1.2.dist-info/RECORD +40 -0
  36. {orca_sdk-0.1.1.dist-info → orca_sdk-0.1.2.dist-info}/WHEEL +1 -1
  37. orca_sdk/_generated_api_client/__init__.py +0 -3
  38. orca_sdk/_generated_api_client/api/__init__.py +0 -193
  39. orca_sdk/_generated_api_client/api/auth/__init__.py +0 -0
  40. orca_sdk/_generated_api_client/api/auth/check_authentication_auth_get.py +0 -128
  41. orca_sdk/_generated_api_client/api/auth/create_api_key_auth_api_key_post.py +0 -170
  42. orca_sdk/_generated_api_client/api/auth/delete_api_key_auth_api_key_name_or_id_delete.py +0 -156
  43. orca_sdk/_generated_api_client/api/auth/delete_org_auth_org_delete.py +0 -130
  44. orca_sdk/_generated_api_client/api/auth/list_api_keys_auth_api_key_get.py +0 -127
  45. orca_sdk/_generated_api_client/api/classification_model/__init__.py +0 -0
  46. orca_sdk/_generated_api_client/api/classification_model/create_evaluation_classification_model_model_name_or_id_evaluation_post.py +0 -183
  47. orca_sdk/_generated_api_client/api/classification_model/create_model_classification_model_post.py +0 -170
  48. orca_sdk/_generated_api_client/api/classification_model/delete_evaluation_classification_model_model_name_or_id_evaluation_task_id_delete.py +0 -168
  49. orca_sdk/_generated_api_client/api/classification_model/delete_model_classification_model_name_or_id_delete.py +0 -154
  50. orca_sdk/_generated_api_client/api/classification_model/get_evaluation_classification_model_model_name_or_id_evaluation_task_id_get.py +0 -170
  51. orca_sdk/_generated_api_client/api/classification_model/get_model_classification_model_name_or_id_get.py +0 -156
  52. orca_sdk/_generated_api_client/api/classification_model/list_evaluations_classification_model_model_name_or_id_evaluation_get.py +0 -161
  53. orca_sdk/_generated_api_client/api/classification_model/list_models_classification_model_get.py +0 -127
  54. orca_sdk/_generated_api_client/api/classification_model/predict_gpu_classification_model_name_or_id_prediction_post.py +0 -190
  55. orca_sdk/_generated_api_client/api/datasource/__init__.py +0 -0
  56. orca_sdk/_generated_api_client/api/datasource/create_datasource_datasource_post.py +0 -167
  57. orca_sdk/_generated_api_client/api/datasource/delete_datasource_datasource_name_or_id_delete.py +0 -156
  58. orca_sdk/_generated_api_client/api/datasource/get_datasource_datasource_name_or_id_get.py +0 -156
  59. orca_sdk/_generated_api_client/api/datasource/list_datasources_datasource_get.py +0 -127
  60. orca_sdk/_generated_api_client/api/default/__init__.py +0 -0
  61. orca_sdk/_generated_api_client/api/default/healthcheck_get.py +0 -118
  62. orca_sdk/_generated_api_client/api/default/healthcheck_gpu_get.py +0 -118
  63. orca_sdk/_generated_api_client/api/finetuned_embedding_model/__init__.py +0 -0
  64. orca_sdk/_generated_api_client/api/finetuned_embedding_model/create_finetuned_embedding_model_finetuned_embedding_model_post.py +0 -168
  65. orca_sdk/_generated_api_client/api/finetuned_embedding_model/delete_finetuned_embedding_model_finetuned_embedding_model_name_or_id_delete.py +0 -156
  66. 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
  67. orca_sdk/_generated_api_client/api/finetuned_embedding_model/get_finetuned_embedding_model_finetuned_embedding_model_name_or_id_get.py +0 -156
  68. orca_sdk/_generated_api_client/api/finetuned_embedding_model/list_finetuned_embedding_models_finetuned_embedding_model_get.py +0 -127
  69. orca_sdk/_generated_api_client/api/memoryset/__init__.py +0 -0
  70. orca_sdk/_generated_api_client/api/memoryset/clone_memoryset_memoryset_name_or_id_clone_post.py +0 -181
  71. orca_sdk/_generated_api_client/api/memoryset/create_analysis_memoryset_name_or_id_analysis_post.py +0 -183
  72. orca_sdk/_generated_api_client/api/memoryset/create_memoryset_memoryset_post.py +0 -168
  73. orca_sdk/_generated_api_client/api/memoryset/delete_memories_memoryset_name_or_id_memories_delete_post.py +0 -181
  74. orca_sdk/_generated_api_client/api/memoryset/delete_memory_memoryset_name_or_id_memory_memory_id_delete.py +0 -167
  75. orca_sdk/_generated_api_client/api/memoryset/delete_memoryset_memoryset_name_or_id_delete.py +0 -156
  76. orca_sdk/_generated_api_client/api/memoryset/get_analysis_memoryset_name_or_id_analysis_analysis_task_id_get.py +0 -169
  77. orca_sdk/_generated_api_client/api/memoryset/get_memories_memoryset_name_or_id_memories_get_post.py +0 -188
  78. orca_sdk/_generated_api_client/api/memoryset/get_memory_memoryset_name_or_id_memory_memory_id_get.py +0 -169
  79. orca_sdk/_generated_api_client/api/memoryset/get_memoryset_memoryset_name_or_id_get.py +0 -156
  80. orca_sdk/_generated_api_client/api/memoryset/insert_memories_gpu_memoryset_name_or_id_memory_post.py +0 -184
  81. orca_sdk/_generated_api_client/api/memoryset/list_analyses_memoryset_name_or_id_analysis_get.py +0 -260
  82. orca_sdk/_generated_api_client/api/memoryset/list_memorysets_memoryset_get.py +0 -127
  83. orca_sdk/_generated_api_client/api/memoryset/memoryset_lookup_gpu_memoryset_name_or_id_lookup_post.py +0 -193
  84. orca_sdk/_generated_api_client/api/memoryset/query_memoryset_memoryset_name_or_id_memories_post.py +0 -188
  85. orca_sdk/_generated_api_client/api/memoryset/update_memories_gpu_memoryset_name_or_id_memories_patch.py +0 -191
  86. orca_sdk/_generated_api_client/api/memoryset/update_memory_gpu_memoryset_name_or_id_memory_patch.py +0 -187
  87. orca_sdk/_generated_api_client/api/pretrained_embedding_model/__init__.py +0 -0
  88. orca_sdk/_generated_api_client/api/pretrained_embedding_model/embed_with_pretrained_model_gpu_pretrained_embedding_model_model_name_embedding_post.py +0 -188
  89. orca_sdk/_generated_api_client/api/pretrained_embedding_model/get_pretrained_embedding_model_pretrained_embedding_model_model_name_get.py +0 -157
  90. orca_sdk/_generated_api_client/api/pretrained_embedding_model/list_pretrained_embedding_models_pretrained_embedding_model_get.py +0 -127
  91. orca_sdk/_generated_api_client/api/task/__init__.py +0 -0
  92. orca_sdk/_generated_api_client/api/task/abort_task_task_task_id_abort_delete.py +0 -154
  93. orca_sdk/_generated_api_client/api/task/get_task_status_task_task_id_status_get.py +0 -156
  94. orca_sdk/_generated_api_client/api/task/list_tasks_task_get.py +0 -243
  95. orca_sdk/_generated_api_client/api/telemetry/__init__.py +0 -0
  96. orca_sdk/_generated_api_client/api/telemetry/drop_feedback_category_with_data_telemetry_feedback_category_name_or_id_delete.py +0 -162
  97. orca_sdk/_generated_api_client/api/telemetry/get_feedback_category_telemetry_feedback_category_name_or_id_get.py +0 -156
  98. orca_sdk/_generated_api_client/api/telemetry/get_prediction_telemetry_prediction_prediction_id_get.py +0 -157
  99. orca_sdk/_generated_api_client/api/telemetry/list_feedback_categories_telemetry_feedback_category_get.py +0 -127
  100. orca_sdk/_generated_api_client/api/telemetry/list_predictions_telemetry_prediction_post.py +0 -175
  101. orca_sdk/_generated_api_client/api/telemetry/record_prediction_feedback_telemetry_prediction_feedback_put.py +0 -171
  102. orca_sdk/_generated_api_client/api/telemetry/update_prediction_telemetry_prediction_prediction_id_patch.py +0 -181
  103. orca_sdk/_generated_api_client/client.py +0 -216
  104. orca_sdk/_generated_api_client/errors.py +0 -38
  105. orca_sdk/_generated_api_client/models/__init__.py +0 -159
  106. orca_sdk/_generated_api_client/models/analyze_neighbor_labels_result.py +0 -84
  107. orca_sdk/_generated_api_client/models/api_key_metadata.py +0 -118
  108. orca_sdk/_generated_api_client/models/base_model.py +0 -55
  109. orca_sdk/_generated_api_client/models/body_create_datasource_datasource_post.py +0 -176
  110. orca_sdk/_generated_api_client/models/classification_evaluation_result.py +0 -114
  111. orca_sdk/_generated_api_client/models/clone_labeled_memoryset_request.py +0 -150
  112. orca_sdk/_generated_api_client/models/column_info.py +0 -114
  113. orca_sdk/_generated_api_client/models/column_type.py +0 -14
  114. orca_sdk/_generated_api_client/models/conflict_error_response.py +0 -80
  115. orca_sdk/_generated_api_client/models/create_api_key_request.py +0 -99
  116. orca_sdk/_generated_api_client/models/create_api_key_response.py +0 -126
  117. orca_sdk/_generated_api_client/models/create_labeled_memoryset_request.py +0 -259
  118. orca_sdk/_generated_api_client/models/create_rac_model_request.py +0 -209
  119. orca_sdk/_generated_api_client/models/datasource_metadata.py +0 -142
  120. orca_sdk/_generated_api_client/models/delete_memories_request.py +0 -70
  121. orca_sdk/_generated_api_client/models/embed_request.py +0 -127
  122. orca_sdk/_generated_api_client/models/embedding_finetuning_method.py +0 -9
  123. orca_sdk/_generated_api_client/models/evaluation_request.py +0 -180
  124. orca_sdk/_generated_api_client/models/evaluation_response.py +0 -140
  125. orca_sdk/_generated_api_client/models/feedback_type.py +0 -9
  126. orca_sdk/_generated_api_client/models/field_validation_error.py +0 -103
  127. orca_sdk/_generated_api_client/models/filter_item.py +0 -231
  128. orca_sdk/_generated_api_client/models/filter_item_field_type_0_item.py +0 -15
  129. orca_sdk/_generated_api_client/models/filter_item_field_type_2_item_type_1.py +0 -16
  130. orca_sdk/_generated_api_client/models/filter_item_op.py +0 -16
  131. orca_sdk/_generated_api_client/models/find_duplicates_analysis_result.py +0 -70
  132. orca_sdk/_generated_api_client/models/finetune_embedding_model_request.py +0 -259
  133. orca_sdk/_generated_api_client/models/finetune_embedding_model_request_training_args.py +0 -66
  134. orca_sdk/_generated_api_client/models/finetuned_embedding_model_metadata.py +0 -166
  135. orca_sdk/_generated_api_client/models/get_memories_request.py +0 -70
  136. orca_sdk/_generated_api_client/models/internal_server_error_response.py +0 -80
  137. orca_sdk/_generated_api_client/models/label_class_metrics.py +0 -108
  138. orca_sdk/_generated_api_client/models/label_prediction_memory_lookup.py +0 -274
  139. orca_sdk/_generated_api_client/models/label_prediction_memory_lookup_metadata.py +0 -68
  140. orca_sdk/_generated_api_client/models/label_prediction_result.py +0 -101
  141. orca_sdk/_generated_api_client/models/label_prediction_with_memories_and_feedback.py +0 -232
  142. orca_sdk/_generated_api_client/models/labeled_memory.py +0 -197
  143. orca_sdk/_generated_api_client/models/labeled_memory_insert.py +0 -108
  144. orca_sdk/_generated_api_client/models/labeled_memory_insert_metadata.py +0 -68
  145. orca_sdk/_generated_api_client/models/labeled_memory_lookup.py +0 -258
  146. orca_sdk/_generated_api_client/models/labeled_memory_lookup_metadata.py +0 -68
  147. orca_sdk/_generated_api_client/models/labeled_memory_metadata.py +0 -68
  148. orca_sdk/_generated_api_client/models/labeled_memory_metrics.py +0 -277
  149. orca_sdk/_generated_api_client/models/labeled_memory_update.py +0 -171
  150. orca_sdk/_generated_api_client/models/labeled_memory_update_metadata_type_0.py +0 -68
  151. orca_sdk/_generated_api_client/models/labeled_memoryset_metadata.py +0 -195
  152. orca_sdk/_generated_api_client/models/list_analyses_memoryset_name_or_id_analysis_get_type_type_0.py +0 -9
  153. orca_sdk/_generated_api_client/models/list_memories_request.py +0 -104
  154. orca_sdk/_generated_api_client/models/list_predictions_request.py +0 -234
  155. orca_sdk/_generated_api_client/models/list_predictions_request_sort_item_item_type_0.py +0 -9
  156. orca_sdk/_generated_api_client/models/list_predictions_request_sort_item_item_type_1.py +0 -9
  157. orca_sdk/_generated_api_client/models/lookup_request.py +0 -81
  158. orca_sdk/_generated_api_client/models/memoryset_analysis_request.py +0 -83
  159. orca_sdk/_generated_api_client/models/memoryset_analysis_request_type.py +0 -9
  160. orca_sdk/_generated_api_client/models/memoryset_analysis_response.py +0 -180
  161. orca_sdk/_generated_api_client/models/memoryset_analysis_response_config.py +0 -66
  162. orca_sdk/_generated_api_client/models/memoryset_analysis_response_type.py +0 -9
  163. orca_sdk/_generated_api_client/models/not_found_error_response.py +0 -100
  164. orca_sdk/_generated_api_client/models/not_found_error_response_resource_type_0.py +0 -20
  165. orca_sdk/_generated_api_client/models/prediction_feedback.py +0 -157
  166. orca_sdk/_generated_api_client/models/prediction_feedback_category.py +0 -115
  167. orca_sdk/_generated_api_client/models/prediction_feedback_request.py +0 -122
  168. orca_sdk/_generated_api_client/models/prediction_feedback_result.py +0 -102
  169. orca_sdk/_generated_api_client/models/prediction_request.py +0 -169
  170. orca_sdk/_generated_api_client/models/pretrained_embedding_model_metadata.py +0 -97
  171. orca_sdk/_generated_api_client/models/pretrained_embedding_model_name.py +0 -11
  172. orca_sdk/_generated_api_client/models/rac_head_type.py +0 -11
  173. orca_sdk/_generated_api_client/models/rac_model_metadata.py +0 -191
  174. orca_sdk/_generated_api_client/models/service_unavailable_error_response.py +0 -80
  175. orca_sdk/_generated_api_client/models/task.py +0 -198
  176. orca_sdk/_generated_api_client/models/task_status.py +0 -14
  177. orca_sdk/_generated_api_client/models/task_status_info.py +0 -133
  178. orca_sdk/_generated_api_client/models/unauthenticated_error_response.py +0 -72
  179. orca_sdk/_generated_api_client/models/unauthorized_error_response.py +0 -80
  180. orca_sdk/_generated_api_client/models/unprocessable_input_error_response.py +0 -94
  181. orca_sdk/_generated_api_client/models/update_prediction_request.py +0 -93
  182. orca_sdk/_generated_api_client/py.typed +0 -1
  183. orca_sdk/_generated_api_client/types.py +0 -56
  184. orca_sdk/_utils/task.py +0 -73
  185. 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}")