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.
- orca_sdk/__init__.py +10 -4
- orca_sdk/_shared/__init__.py +10 -0
- orca_sdk/_shared/metrics.py +393 -0
- orca_sdk/_shared/metrics_test.py +273 -0
- orca_sdk/_utils/analysis_ui.py +12 -10
- orca_sdk/_utils/analysis_ui_style.css +0 -3
- orca_sdk/_utils/auth.py +31 -29
- orca_sdk/_utils/data_parsing.py +28 -2
- orca_sdk/_utils/data_parsing_test.py +15 -15
- orca_sdk/_utils/pagination.py +126 -0
- orca_sdk/_utils/pagination_test.py +132 -0
- orca_sdk/_utils/prediction_result_ui.py +67 -21
- orca_sdk/_utils/tqdm_file_reader.py +12 -0
- orca_sdk/_utils/value_parser.py +45 -0
- orca_sdk/_utils/value_parser_test.py +39 -0
- orca_sdk/async_client.py +3795 -0
- orca_sdk/classification_model.py +601 -129
- orca_sdk/classification_model_test.py +415 -117
- orca_sdk/client.py +3787 -0
- orca_sdk/conftest.py +184 -38
- orca_sdk/credentials.py +162 -20
- orca_sdk/credentials_test.py +100 -16
- orca_sdk/datasource.py +268 -68
- orca_sdk/datasource_test.py +266 -18
- orca_sdk/embedding_model.py +434 -82
- orca_sdk/embedding_model_test.py +66 -33
- orca_sdk/job.py +343 -0
- orca_sdk/job_test.py +108 -0
- orca_sdk/memoryset.py +1690 -324
- orca_sdk/memoryset_test.py +456 -119
- orca_sdk/regression_model.py +694 -0
- orca_sdk/regression_model_test.py +378 -0
- orca_sdk/telemetry.py +460 -143
- orca_sdk/telemetry_test.py +43 -24
- {orca_sdk-0.1.1.dist-info → orca_sdk-0.1.3.dist-info}/METADATA +34 -16
- orca_sdk-0.1.3.dist-info/RECORD +41 -0
- {orca_sdk-0.1.1.dist-info → orca_sdk-0.1.3.dist-info}/WHEEL +1 -1
- orca_sdk/_generated_api_client/__init__.py +0 -3
- orca_sdk/_generated_api_client/api/__init__.py +0 -193
- orca_sdk/_generated_api_client/api/auth/__init__.py +0 -0
- orca_sdk/_generated_api_client/api/auth/check_authentication_auth_get.py +0 -128
- orca_sdk/_generated_api_client/api/auth/create_api_key_auth_api_key_post.py +0 -170
- orca_sdk/_generated_api_client/api/auth/delete_api_key_auth_api_key_name_or_id_delete.py +0 -156
- orca_sdk/_generated_api_client/api/auth/delete_org_auth_org_delete.py +0 -130
- orca_sdk/_generated_api_client/api/auth/list_api_keys_auth_api_key_get.py +0 -127
- orca_sdk/_generated_api_client/api/classification_model/__init__.py +0 -0
- orca_sdk/_generated_api_client/api/classification_model/create_evaluation_classification_model_model_name_or_id_evaluation_post.py +0 -183
- orca_sdk/_generated_api_client/api/classification_model/create_model_classification_model_post.py +0 -170
- orca_sdk/_generated_api_client/api/classification_model/delete_evaluation_classification_model_model_name_or_id_evaluation_task_id_delete.py +0 -168
- orca_sdk/_generated_api_client/api/classification_model/delete_model_classification_model_name_or_id_delete.py +0 -154
- orca_sdk/_generated_api_client/api/classification_model/get_evaluation_classification_model_model_name_or_id_evaluation_task_id_get.py +0 -170
- orca_sdk/_generated_api_client/api/classification_model/get_model_classification_model_name_or_id_get.py +0 -156
- orca_sdk/_generated_api_client/api/classification_model/list_evaluations_classification_model_model_name_or_id_evaluation_get.py +0 -161
- orca_sdk/_generated_api_client/api/classification_model/list_models_classification_model_get.py +0 -127
- orca_sdk/_generated_api_client/api/classification_model/predict_gpu_classification_model_name_or_id_prediction_post.py +0 -190
- orca_sdk/_generated_api_client/api/datasource/__init__.py +0 -0
- orca_sdk/_generated_api_client/api/datasource/create_datasource_datasource_post.py +0 -167
- orca_sdk/_generated_api_client/api/datasource/delete_datasource_datasource_name_or_id_delete.py +0 -156
- orca_sdk/_generated_api_client/api/datasource/get_datasource_datasource_name_or_id_get.py +0 -156
- orca_sdk/_generated_api_client/api/datasource/list_datasources_datasource_get.py +0 -127
- orca_sdk/_generated_api_client/api/default/__init__.py +0 -0
- orca_sdk/_generated_api_client/api/default/healthcheck_get.py +0 -118
- orca_sdk/_generated_api_client/api/default/healthcheck_gpu_get.py +0 -118
- orca_sdk/_generated_api_client/api/finetuned_embedding_model/__init__.py +0 -0
- orca_sdk/_generated_api_client/api/finetuned_embedding_model/create_finetuned_embedding_model_finetuned_embedding_model_post.py +0 -168
- orca_sdk/_generated_api_client/api/finetuned_embedding_model/delete_finetuned_embedding_model_finetuned_embedding_model_name_or_id_delete.py +0 -156
- 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
- orca_sdk/_generated_api_client/api/finetuned_embedding_model/get_finetuned_embedding_model_finetuned_embedding_model_name_or_id_get.py +0 -156
- orca_sdk/_generated_api_client/api/finetuned_embedding_model/list_finetuned_embedding_models_finetuned_embedding_model_get.py +0 -127
- orca_sdk/_generated_api_client/api/memoryset/__init__.py +0 -0
- orca_sdk/_generated_api_client/api/memoryset/clone_memoryset_memoryset_name_or_id_clone_post.py +0 -181
- orca_sdk/_generated_api_client/api/memoryset/create_analysis_memoryset_name_or_id_analysis_post.py +0 -183
- orca_sdk/_generated_api_client/api/memoryset/create_memoryset_memoryset_post.py +0 -168
- orca_sdk/_generated_api_client/api/memoryset/delete_memories_memoryset_name_or_id_memories_delete_post.py +0 -181
- orca_sdk/_generated_api_client/api/memoryset/delete_memory_memoryset_name_or_id_memory_memory_id_delete.py +0 -167
- orca_sdk/_generated_api_client/api/memoryset/delete_memoryset_memoryset_name_or_id_delete.py +0 -156
- orca_sdk/_generated_api_client/api/memoryset/get_analysis_memoryset_name_or_id_analysis_analysis_task_id_get.py +0 -169
- orca_sdk/_generated_api_client/api/memoryset/get_memories_memoryset_name_or_id_memories_get_post.py +0 -188
- orca_sdk/_generated_api_client/api/memoryset/get_memory_memoryset_name_or_id_memory_memory_id_get.py +0 -169
- orca_sdk/_generated_api_client/api/memoryset/get_memoryset_memoryset_name_or_id_get.py +0 -156
- orca_sdk/_generated_api_client/api/memoryset/insert_memories_gpu_memoryset_name_or_id_memory_post.py +0 -184
- orca_sdk/_generated_api_client/api/memoryset/list_analyses_memoryset_name_or_id_analysis_get.py +0 -260
- orca_sdk/_generated_api_client/api/memoryset/list_memorysets_memoryset_get.py +0 -127
- orca_sdk/_generated_api_client/api/memoryset/memoryset_lookup_gpu_memoryset_name_or_id_lookup_post.py +0 -193
- orca_sdk/_generated_api_client/api/memoryset/query_memoryset_memoryset_name_or_id_memories_post.py +0 -188
- orca_sdk/_generated_api_client/api/memoryset/update_memories_gpu_memoryset_name_or_id_memories_patch.py +0 -191
- orca_sdk/_generated_api_client/api/memoryset/update_memory_gpu_memoryset_name_or_id_memory_patch.py +0 -187
- orca_sdk/_generated_api_client/api/pretrained_embedding_model/__init__.py +0 -0
- orca_sdk/_generated_api_client/api/pretrained_embedding_model/embed_with_pretrained_model_gpu_pretrained_embedding_model_model_name_embedding_post.py +0 -188
- orca_sdk/_generated_api_client/api/pretrained_embedding_model/get_pretrained_embedding_model_pretrained_embedding_model_model_name_get.py +0 -157
- orca_sdk/_generated_api_client/api/pretrained_embedding_model/list_pretrained_embedding_models_pretrained_embedding_model_get.py +0 -127
- orca_sdk/_generated_api_client/api/task/__init__.py +0 -0
- orca_sdk/_generated_api_client/api/task/abort_task_task_task_id_abort_delete.py +0 -154
- orca_sdk/_generated_api_client/api/task/get_task_status_task_task_id_status_get.py +0 -156
- orca_sdk/_generated_api_client/api/task/list_tasks_task_get.py +0 -243
- orca_sdk/_generated_api_client/api/telemetry/__init__.py +0 -0
- orca_sdk/_generated_api_client/api/telemetry/drop_feedback_category_with_data_telemetry_feedback_category_name_or_id_delete.py +0 -162
- orca_sdk/_generated_api_client/api/telemetry/get_feedback_category_telemetry_feedback_category_name_or_id_get.py +0 -156
- orca_sdk/_generated_api_client/api/telemetry/get_prediction_telemetry_prediction_prediction_id_get.py +0 -157
- orca_sdk/_generated_api_client/api/telemetry/list_feedback_categories_telemetry_feedback_category_get.py +0 -127
- orca_sdk/_generated_api_client/api/telemetry/list_predictions_telemetry_prediction_post.py +0 -175
- orca_sdk/_generated_api_client/api/telemetry/record_prediction_feedback_telemetry_prediction_feedback_put.py +0 -171
- orca_sdk/_generated_api_client/api/telemetry/update_prediction_telemetry_prediction_prediction_id_patch.py +0 -181
- orca_sdk/_generated_api_client/client.py +0 -216
- orca_sdk/_generated_api_client/errors.py +0 -38
- orca_sdk/_generated_api_client/models/__init__.py +0 -159
- orca_sdk/_generated_api_client/models/analyze_neighbor_labels_result.py +0 -84
- orca_sdk/_generated_api_client/models/api_key_metadata.py +0 -118
- orca_sdk/_generated_api_client/models/base_model.py +0 -55
- orca_sdk/_generated_api_client/models/body_create_datasource_datasource_post.py +0 -176
- orca_sdk/_generated_api_client/models/classification_evaluation_result.py +0 -114
- orca_sdk/_generated_api_client/models/clone_labeled_memoryset_request.py +0 -150
- orca_sdk/_generated_api_client/models/column_info.py +0 -114
- orca_sdk/_generated_api_client/models/column_type.py +0 -14
- orca_sdk/_generated_api_client/models/conflict_error_response.py +0 -80
- orca_sdk/_generated_api_client/models/create_api_key_request.py +0 -99
- orca_sdk/_generated_api_client/models/create_api_key_response.py +0 -126
- orca_sdk/_generated_api_client/models/create_labeled_memoryset_request.py +0 -259
- orca_sdk/_generated_api_client/models/create_rac_model_request.py +0 -209
- orca_sdk/_generated_api_client/models/datasource_metadata.py +0 -142
- orca_sdk/_generated_api_client/models/delete_memories_request.py +0 -70
- orca_sdk/_generated_api_client/models/embed_request.py +0 -127
- orca_sdk/_generated_api_client/models/embedding_finetuning_method.py +0 -9
- orca_sdk/_generated_api_client/models/evaluation_request.py +0 -180
- orca_sdk/_generated_api_client/models/evaluation_response.py +0 -140
- orca_sdk/_generated_api_client/models/feedback_type.py +0 -9
- orca_sdk/_generated_api_client/models/field_validation_error.py +0 -103
- orca_sdk/_generated_api_client/models/filter_item.py +0 -231
- orca_sdk/_generated_api_client/models/filter_item_field_type_0_item.py +0 -15
- orca_sdk/_generated_api_client/models/filter_item_field_type_2_item_type_1.py +0 -16
- orca_sdk/_generated_api_client/models/filter_item_op.py +0 -16
- orca_sdk/_generated_api_client/models/find_duplicates_analysis_result.py +0 -70
- orca_sdk/_generated_api_client/models/finetune_embedding_model_request.py +0 -259
- orca_sdk/_generated_api_client/models/finetune_embedding_model_request_training_args.py +0 -66
- orca_sdk/_generated_api_client/models/finetuned_embedding_model_metadata.py +0 -166
- orca_sdk/_generated_api_client/models/get_memories_request.py +0 -70
- orca_sdk/_generated_api_client/models/internal_server_error_response.py +0 -80
- orca_sdk/_generated_api_client/models/label_class_metrics.py +0 -108
- orca_sdk/_generated_api_client/models/label_prediction_memory_lookup.py +0 -274
- orca_sdk/_generated_api_client/models/label_prediction_memory_lookup_metadata.py +0 -68
- orca_sdk/_generated_api_client/models/label_prediction_result.py +0 -101
- orca_sdk/_generated_api_client/models/label_prediction_with_memories_and_feedback.py +0 -232
- orca_sdk/_generated_api_client/models/labeled_memory.py +0 -197
- orca_sdk/_generated_api_client/models/labeled_memory_insert.py +0 -108
- orca_sdk/_generated_api_client/models/labeled_memory_insert_metadata.py +0 -68
- orca_sdk/_generated_api_client/models/labeled_memory_lookup.py +0 -258
- orca_sdk/_generated_api_client/models/labeled_memory_lookup_metadata.py +0 -68
- orca_sdk/_generated_api_client/models/labeled_memory_metadata.py +0 -68
- orca_sdk/_generated_api_client/models/labeled_memory_metrics.py +0 -277
- orca_sdk/_generated_api_client/models/labeled_memory_update.py +0 -171
- orca_sdk/_generated_api_client/models/labeled_memory_update_metadata_type_0.py +0 -68
- orca_sdk/_generated_api_client/models/labeled_memoryset_metadata.py +0 -195
- orca_sdk/_generated_api_client/models/list_analyses_memoryset_name_or_id_analysis_get_type_type_0.py +0 -9
- orca_sdk/_generated_api_client/models/list_memories_request.py +0 -104
- orca_sdk/_generated_api_client/models/list_predictions_request.py +0 -234
- orca_sdk/_generated_api_client/models/list_predictions_request_sort_item_item_type_0.py +0 -9
- orca_sdk/_generated_api_client/models/list_predictions_request_sort_item_item_type_1.py +0 -9
- orca_sdk/_generated_api_client/models/lookup_request.py +0 -81
- orca_sdk/_generated_api_client/models/memoryset_analysis_request.py +0 -83
- orca_sdk/_generated_api_client/models/memoryset_analysis_request_type.py +0 -9
- orca_sdk/_generated_api_client/models/memoryset_analysis_response.py +0 -180
- orca_sdk/_generated_api_client/models/memoryset_analysis_response_config.py +0 -66
- orca_sdk/_generated_api_client/models/memoryset_analysis_response_type.py +0 -9
- orca_sdk/_generated_api_client/models/not_found_error_response.py +0 -100
- orca_sdk/_generated_api_client/models/not_found_error_response_resource_type_0.py +0 -20
- orca_sdk/_generated_api_client/models/prediction_feedback.py +0 -157
- orca_sdk/_generated_api_client/models/prediction_feedback_category.py +0 -115
- orca_sdk/_generated_api_client/models/prediction_feedback_request.py +0 -122
- orca_sdk/_generated_api_client/models/prediction_feedback_result.py +0 -102
- orca_sdk/_generated_api_client/models/prediction_request.py +0 -169
- orca_sdk/_generated_api_client/models/pretrained_embedding_model_metadata.py +0 -97
- orca_sdk/_generated_api_client/models/pretrained_embedding_model_name.py +0 -11
- orca_sdk/_generated_api_client/models/rac_head_type.py +0 -11
- orca_sdk/_generated_api_client/models/rac_model_metadata.py +0 -191
- orca_sdk/_generated_api_client/models/service_unavailable_error_response.py +0 -80
- orca_sdk/_generated_api_client/models/task.py +0 -198
- orca_sdk/_generated_api_client/models/task_status.py +0 -14
- orca_sdk/_generated_api_client/models/task_status_info.py +0 -133
- orca_sdk/_generated_api_client/models/unauthenticated_error_response.py +0 -72
- orca_sdk/_generated_api_client/models/unauthorized_error_response.py +0 -80
- orca_sdk/_generated_api_client/models/unprocessable_input_error_response.py +0 -94
- orca_sdk/_generated_api_client/models/update_prediction_request.py +0 -93
- orca_sdk/_generated_api_client/py.typed +0 -1
- orca_sdk/_generated_api_client/types.py +0 -56
- orca_sdk/_utils/task.py +0 -73
- 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}")
|