label-studio-sdk 1.0.8__py3-none-any.whl → 1.0.10__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.
Potentially problematic release.
This version of label-studio-sdk might be problematic. Click here for more details.
- label_studio_sdk/__init__.py +20 -7
- label_studio_sdk/_extensions/label_studio_tools/core/utils/io.py +16 -4
- label_studio_sdk/_extensions/pager_ext.py +8 -0
- label_studio_sdk/actions/client.py +91 -40
- label_studio_sdk/actions/types/actions_create_request_filters.py +14 -24
- label_studio_sdk/actions/types/actions_create_request_filters_items_item.py +16 -26
- label_studio_sdk/actions/types/actions_create_request_filters_items_item_value.py +3 -1
- label_studio_sdk/actions/types/actions_create_request_selected_items.py +1 -2
- label_studio_sdk/actions/types/actions_create_request_selected_items_excluded.py +15 -25
- label_studio_sdk/actions/types/actions_create_request_selected_items_included.py +15 -25
- label_studio_sdk/annotations/__init__.py +2 -2
- label_studio_sdk/annotations/client.py +278 -104
- label_studio_sdk/annotations/types/__init__.py +2 -1
- label_studio_sdk/annotations/types/annotations_create_bulk_request_selected_items.py +34 -0
- label_studio_sdk/annotations/types/annotations_create_bulk_response_item.py +11 -21
- label_studio_sdk/base_client.py +46 -27
- label_studio_sdk/client.py +1 -0
- label_studio_sdk/comments/client.py +190 -44
- label_studio_sdk/converter/converter.py +56 -13
- label_studio_sdk/converter/imports/yolo.py +1 -1
- label_studio_sdk/converter/utils.py +3 -2
- label_studio_sdk/core/__init__.py +21 -4
- label_studio_sdk/core/client_wrapper.py +9 -10
- label_studio_sdk/core/file.py +37 -8
- label_studio_sdk/core/http_client.py +52 -28
- label_studio_sdk/core/jsonable_encoder.py +33 -31
- label_studio_sdk/core/pagination.py +5 -4
- label_studio_sdk/core/pydantic_utilities.py +272 -4
- label_studio_sdk/core/query_encoder.py +38 -13
- label_studio_sdk/core/request_options.py +3 -0
- label_studio_sdk/core/serialization.py +272 -0
- label_studio_sdk/errors/bad_request_error.py +2 -3
- label_studio_sdk/export_storage/azure/client.py +228 -58
- label_studio_sdk/export_storage/azure/types/azure_create_response.py +19 -29
- label_studio_sdk/export_storage/azure/types/azure_update_response.py +19 -29
- label_studio_sdk/export_storage/client.py +48 -18
- label_studio_sdk/export_storage/gcs/client.py +228 -58
- label_studio_sdk/export_storage/gcs/types/gcs_create_response.py +19 -29
- label_studio_sdk/export_storage/gcs/types/gcs_update_response.py +19 -29
- label_studio_sdk/export_storage/local/client.py +222 -56
- label_studio_sdk/export_storage/local/types/local_create_response.py +17 -27
- label_studio_sdk/export_storage/local/types/local_update_response.py +17 -27
- label_studio_sdk/export_storage/redis/client.py +228 -58
- label_studio_sdk/export_storage/redis/types/redis_create_response.py +20 -30
- label_studio_sdk/export_storage/redis/types/redis_update_response.py +20 -30
- label_studio_sdk/export_storage/s3/client.py +228 -58
- label_studio_sdk/export_storage/s3/types/s3create_response.py +27 -35
- label_studio_sdk/export_storage/s3/types/s3update_response.py +27 -35
- label_studio_sdk/export_storage/s3s/client.py +187 -43
- label_studio_sdk/export_storage/types/export_storage_list_types_response_item.py +11 -21
- label_studio_sdk/files/client.py +172 -56
- label_studio_sdk/import_storage/azure/client.py +223 -53
- label_studio_sdk/import_storage/azure/types/azure_create_response.py +22 -32
- label_studio_sdk/import_storage/azure/types/azure_update_response.py +22 -32
- label_studio_sdk/import_storage/client.py +48 -18
- label_studio_sdk/import_storage/gcs/client.py +223 -53
- label_studio_sdk/import_storage/gcs/types/gcs_create_response.py +22 -32
- label_studio_sdk/import_storage/gcs/types/gcs_update_response.py +22 -32
- label_studio_sdk/import_storage/local/client.py +223 -53
- label_studio_sdk/import_storage/local/types/local_create_response.py +17 -27
- label_studio_sdk/import_storage/local/types/local_update_response.py +17 -27
- label_studio_sdk/import_storage/redis/client.py +223 -53
- label_studio_sdk/import_storage/redis/types/redis_create_response.py +20 -30
- label_studio_sdk/import_storage/redis/types/redis_update_response.py +20 -30
- label_studio_sdk/import_storage/s3/client.py +223 -53
- label_studio_sdk/import_storage/s3/types/s3create_response.py +31 -39
- label_studio_sdk/import_storage/s3/types/s3update_response.py +31 -39
- label_studio_sdk/import_storage/s3s/client.py +222 -52
- label_studio_sdk/import_storage/types/import_storage_list_types_response_item.py +11 -21
- label_studio_sdk/label_interface/control_tags.py +1 -1
- label_studio_sdk/ml/client.py +280 -78
- label_studio_sdk/ml/types/ml_create_response.py +21 -31
- label_studio_sdk/ml/types/ml_update_response.py +21 -31
- label_studio_sdk/model_providers/client.py +173 -56
- label_studio_sdk/predictions/client.py +247 -101
- label_studio_sdk/projects/__init__.py +3 -0
- label_studio_sdk/projects/client.py +309 -115
- label_studio_sdk/projects/client_ext.py +16 -0
- label_studio_sdk/projects/exports/__init__.py +3 -0
- label_studio_sdk/projects/exports/client.py +447 -296
- label_studio_sdk/projects/exports/client_ext.py +134 -0
- label_studio_sdk/projects/exports/types/__init__.py +6 -0
- label_studio_sdk/projects/exports/types/exports_convert_response.py +24 -0
- label_studio_sdk/projects/exports/types/exports_list_formats_response_item.py +44 -0
- label_studio_sdk/projects/types/projects_create_response.py +29 -34
- label_studio_sdk/projects/types/projects_import_tasks_response.py +19 -29
- label_studio_sdk/projects/types/projects_list_response.py +11 -21
- label_studio_sdk/projects/types/projects_update_response.py +24 -34
- label_studio_sdk/prompts/client.py +309 -92
- label_studio_sdk/prompts/indicators/client.py +67 -23
- label_studio_sdk/prompts/runs/client.py +95 -40
- label_studio_sdk/prompts/types/prompts_batch_failed_predictions_request_failed_predictions_item.py +14 -24
- label_studio_sdk/prompts/types/prompts_batch_failed_predictions_response.py +11 -21
- label_studio_sdk/prompts/types/prompts_batch_predictions_request_results_item.py +26 -29
- label_studio_sdk/prompts/types/prompts_batch_predictions_response.py +11 -21
- label_studio_sdk/prompts/versions/client.py +277 -88
- label_studio_sdk/tasks/client.py +263 -90
- label_studio_sdk/tasks/types/tasks_list_response.py +15 -25
- label_studio_sdk/types/__init__.py +10 -6
- label_studio_sdk/types/annotation.py +29 -38
- label_studio_sdk/types/annotation_filter_options.py +14 -24
- label_studio_sdk/types/annotations_dm_field.py +30 -39
- label_studio_sdk/types/azure_blob_export_storage.py +28 -37
- label_studio_sdk/types/azure_blob_import_storage.py +28 -37
- label_studio_sdk/types/base_task.py +30 -39
- label_studio_sdk/types/base_task_updated_by.py +3 -1
- label_studio_sdk/types/base_user.py +14 -21
- label_studio_sdk/types/comment.py +12 -21
- label_studio_sdk/types/comment_created_by.py +1 -1
- label_studio_sdk/types/converted_format.py +12 -22
- label_studio_sdk/types/data_manager_task_serializer.py +31 -40
- label_studio_sdk/types/data_manager_task_serializer_annotators_item.py +1 -1
- label_studio_sdk/types/data_manager_task_serializer_drafts_item.py +13 -22
- label_studio_sdk/types/data_manager_task_serializer_predictions_item.py +15 -24
- label_studio_sdk/types/export.py +17 -26
- label_studio_sdk/types/export_format.py +25 -0
- label_studio_sdk/types/export_snapshot.py +45 -0
- label_studio_sdk/types/export_snapshot_status.py +5 -0
- label_studio_sdk/types/file_upload.py +11 -21
- label_studio_sdk/types/filter.py +16 -26
- label_studio_sdk/types/filter_group.py +12 -22
- label_studio_sdk/types/gcs_export_storage.py +28 -37
- label_studio_sdk/types/gcs_import_storage.py +28 -37
- label_studio_sdk/types/inference_run.py +14 -23
- label_studio_sdk/types/inference_run_cost_estimate.py +17 -27
- label_studio_sdk/types/inference_run_created_by.py +1 -1
- label_studio_sdk/types/inference_run_organization.py +1 -1
- label_studio_sdk/types/key_indicator_value.py +12 -22
- label_studio_sdk/types/key_indicators.py +0 -1
- label_studio_sdk/types/key_indicators_item.py +15 -25
- label_studio_sdk/types/key_indicators_item_additional_kpis_item.py +13 -23
- label_studio_sdk/types/key_indicators_item_extra_kpis_item.py +13 -23
- label_studio_sdk/types/local_files_export_storage.py +25 -34
- label_studio_sdk/types/local_files_import_storage.py +24 -33
- label_studio_sdk/types/ml_backend.py +23 -32
- label_studio_sdk/types/model_provider_connection.py +22 -31
- label_studio_sdk/types/model_provider_connection_created_by.py +1 -1
- label_studio_sdk/types/model_provider_connection_organization.py +1 -1
- label_studio_sdk/types/model_provider_connection_provider.py +3 -1
- label_studio_sdk/types/prediction.py +21 -30
- label_studio_sdk/types/project.py +48 -55
- label_studio_sdk/types/project_import.py +21 -30
- label_studio_sdk/types/project_label_config.py +12 -22
- label_studio_sdk/types/prompt.py +24 -32
- label_studio_sdk/types/prompt_associated_projects_item.py +6 -0
- label_studio_sdk/types/prompt_associated_projects_item_id.py +20 -0
- label_studio_sdk/types/prompt_created_by.py +1 -1
- label_studio_sdk/types/prompt_organization.py +1 -1
- label_studio_sdk/types/prompt_version.py +13 -22
- label_studio_sdk/types/prompt_version_created_by.py +1 -1
- label_studio_sdk/types/prompt_version_organization.py +1 -1
- label_studio_sdk/types/prompt_version_provider.py +3 -1
- label_studio_sdk/types/redis_export_storage.py +29 -38
- label_studio_sdk/types/redis_import_storage.py +28 -37
- label_studio_sdk/types/refined_prompt_response.py +19 -29
- label_studio_sdk/types/s3export_storage.py +36 -43
- label_studio_sdk/types/s3import_storage.py +37 -44
- label_studio_sdk/types/s3s_export_storage.py +26 -33
- label_studio_sdk/types/s3s_import_storage.py +35 -42
- label_studio_sdk/types/serialization_option.py +12 -22
- label_studio_sdk/types/serialization_options.py +18 -28
- label_studio_sdk/types/task.py +44 -47
- label_studio_sdk/types/task_annotators_item.py +1 -1
- label_studio_sdk/types/task_comment_authors_item.py +1 -1
- label_studio_sdk/types/task_filter_options.py +15 -25
- label_studio_sdk/types/user_simple.py +11 -21
- label_studio_sdk/types/view.py +16 -26
- label_studio_sdk/types/webhook.py +19 -28
- label_studio_sdk/types/webhook_serializer_for_update.py +19 -28
- label_studio_sdk/types/workspace.py +22 -31
- label_studio_sdk/users/client.py +257 -63
- label_studio_sdk/users/types/users_get_token_response.py +12 -22
- label_studio_sdk/users/types/users_reset_token_response.py +12 -22
- label_studio_sdk/version.py +0 -1
- label_studio_sdk/versions/__init__.py +5 -0
- label_studio_sdk/versions/client.py +112 -0
- label_studio_sdk/versions/types/__init__.py +6 -0
- label_studio_sdk/versions/types/versions_get_response.py +73 -0
- label_studio_sdk/versions/types/versions_get_response_edition.py +5 -0
- label_studio_sdk/views/client.py +219 -52
- label_studio_sdk/views/types/views_create_request_data.py +13 -23
- label_studio_sdk/views/types/views_create_request_data_filters.py +14 -24
- label_studio_sdk/views/types/views_create_request_data_filters_items_item.py +16 -26
- label_studio_sdk/views/types/views_create_request_data_filters_items_item_value.py +3 -1
- label_studio_sdk/views/types/views_update_request_data.py +13 -23
- label_studio_sdk/views/types/views_update_request_data_filters.py +14 -24
- label_studio_sdk/views/types/views_update_request_data_filters_items_item.py +16 -26
- label_studio_sdk/views/types/views_update_request_data_filters_items_item_value.py +3 -1
- label_studio_sdk/webhooks/client.py +191 -61
- label_studio_sdk/workspaces/client.py +164 -41
- label_studio_sdk/workspaces/members/client.py +109 -31
- label_studio_sdk/workspaces/members/types/members_create_response.py +12 -22
- label_studio_sdk/workspaces/members/types/members_list_response_item.py +12 -22
- {label_studio_sdk-1.0.8.dist-info → label_studio_sdk-1.0.10.dist-info}/METADATA +7 -5
- {label_studio_sdk-1.0.8.dist-info → label_studio_sdk-1.0.10.dist-info}/RECORD +197 -184
- {label_studio_sdk-1.0.8.dist-info → label_studio_sdk-1.0.10.dist-info}/WHEEL +1 -1
- label_studio_sdk/types/export_convert.py +0 -32
- label_studio_sdk/types/export_create.py +0 -54
- label_studio_sdk/types/export_create_status.py +0 -5
- {label_studio_sdk-1.0.8.dist-info → label_studio_sdk-1.0.10.dist-info}/LICENSE +0 -0
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
# This file was auto-generated by Fern from our API Definition.
|
|
2
2
|
|
|
3
3
|
import typing
|
|
4
|
+
from ...core.client_wrapper import SyncClientWrapper
|
|
5
|
+
from ...core.request_options import RequestOptions
|
|
6
|
+
from ...types.s3s_export_storage import S3SExportStorage
|
|
7
|
+
from ...core.pydantic_utilities import parse_obj_as
|
|
4
8
|
from json.decoder import JSONDecodeError
|
|
5
|
-
|
|
6
9
|
from ...core.api_error import ApiError
|
|
7
|
-
from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
|
8
10
|
from ...core.jsonable_encoder import jsonable_encoder
|
|
9
|
-
from ...core.
|
|
10
|
-
from ...core.request_options import RequestOptions
|
|
11
|
-
from ...types.s3s_export_storage import S3SExportStorage
|
|
11
|
+
from ...core.client_wrapper import AsyncClientWrapper
|
|
12
12
|
|
|
13
13
|
# this is used as the default value for optional parameters
|
|
14
14
|
OMIT = typing.cast(typing.Any, ...)
|
|
@@ -22,6 +22,7 @@ class S3SClient:
|
|
|
22
22
|
self, *, project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None
|
|
23
23
|
) -> typing.List[S3SExportStorage]:
|
|
24
24
|
"""
|
|
25
|
+
|
|
25
26
|
You can connect your S3 bucket to Label Studio as a source storage or target storage. Use this API request to get a list of all S3 export (target) storage connections for a specific project.
|
|
26
27
|
|
|
27
28
|
The project ID can be found in the URL when viewing the project in Label Studio, or you can retrieve all project IDs using [List all projects](../projects/list).
|
|
@@ -43,7 +44,7 @@ class S3SClient:
|
|
|
43
44
|
|
|
44
45
|
Examples
|
|
45
46
|
--------
|
|
46
|
-
from label_studio_sdk
|
|
47
|
+
from label_studio_sdk import LabelStudio
|
|
47
48
|
|
|
48
49
|
client = LabelStudio(
|
|
49
50
|
api_key="YOUR_API_KEY",
|
|
@@ -51,11 +52,22 @@ class S3SClient:
|
|
|
51
52
|
client.export_storage.s3s.list()
|
|
52
53
|
"""
|
|
53
54
|
_response = self._client_wrapper.httpx_client.request(
|
|
54
|
-
"api/storages/export/s3s",
|
|
55
|
+
"api/storages/export/s3s",
|
|
56
|
+
method="GET",
|
|
57
|
+
params={
|
|
58
|
+
"project": project,
|
|
59
|
+
},
|
|
60
|
+
request_options=request_options,
|
|
55
61
|
)
|
|
56
62
|
try:
|
|
57
63
|
if 200 <= _response.status_code < 300:
|
|
58
|
-
return
|
|
64
|
+
return typing.cast(
|
|
65
|
+
typing.List[S3SExportStorage],
|
|
66
|
+
parse_obj_as(
|
|
67
|
+
type_=typing.List[S3SExportStorage], # type: ignore
|
|
68
|
+
object_=_response.json(),
|
|
69
|
+
),
|
|
70
|
+
)
|
|
59
71
|
_response_json = _response.json()
|
|
60
72
|
except JSONDecodeError:
|
|
61
73
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -77,6 +89,7 @@ class S3SClient:
|
|
|
77
89
|
request_options: typing.Optional[RequestOptions] = None,
|
|
78
90
|
) -> S3SExportStorage:
|
|
79
91
|
"""
|
|
92
|
+
|
|
80
93
|
Create a new target storage connection to a S3 bucket with IAM role access.
|
|
81
94
|
|
|
82
95
|
For information about the required fields and prerequisites, see [Amazon S3](https://docs.humansignal.com/guide/storage#Set-up-an-S3-connection-with-IAM-role-access) in the Label Studio documentation.
|
|
@@ -123,7 +136,7 @@ class S3SClient:
|
|
|
123
136
|
|
|
124
137
|
Examples
|
|
125
138
|
--------
|
|
126
|
-
from label_studio_sdk
|
|
139
|
+
from label_studio_sdk import LabelStudio
|
|
127
140
|
|
|
128
141
|
client = LabelStudio(
|
|
129
142
|
api_key="YOUR_API_KEY",
|
|
@@ -145,12 +158,21 @@ class S3SClient:
|
|
|
145
158
|
"region_name": region_name,
|
|
146
159
|
"s3_endpoint": s3endpoint,
|
|
147
160
|
},
|
|
161
|
+
headers={
|
|
162
|
+
"content-type": "application/json",
|
|
163
|
+
},
|
|
148
164
|
request_options=request_options,
|
|
149
165
|
omit=OMIT,
|
|
150
166
|
)
|
|
151
167
|
try:
|
|
152
168
|
if 200 <= _response.status_code < 300:
|
|
153
|
-
return
|
|
169
|
+
return typing.cast(
|
|
170
|
+
S3SExportStorage,
|
|
171
|
+
parse_obj_as(
|
|
172
|
+
type_=S3SExportStorage, # type: ignore
|
|
173
|
+
object_=_response.json(),
|
|
174
|
+
),
|
|
175
|
+
)
|
|
154
176
|
_response_json = _response.json()
|
|
155
177
|
except JSONDecodeError:
|
|
156
178
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -158,6 +180,7 @@ class S3SClient:
|
|
|
158
180
|
|
|
159
181
|
def get(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> S3SExportStorage:
|
|
160
182
|
"""
|
|
183
|
+
|
|
161
184
|
Get a specific S3 export storage connection. You will need to provide the export storage ID. You can find this using [List export storages](list).
|
|
162
185
|
|
|
163
186
|
Parameters
|
|
@@ -175,7 +198,7 @@ class S3SClient:
|
|
|
175
198
|
|
|
176
199
|
Examples
|
|
177
200
|
--------
|
|
178
|
-
from label_studio_sdk
|
|
201
|
+
from label_studio_sdk import LabelStudio
|
|
179
202
|
|
|
180
203
|
client = LabelStudio(
|
|
181
204
|
api_key="YOUR_API_KEY",
|
|
@@ -185,11 +208,19 @@ class S3SClient:
|
|
|
185
208
|
)
|
|
186
209
|
"""
|
|
187
210
|
_response = self._client_wrapper.httpx_client.request(
|
|
188
|
-
f"api/storages/export/s3s/{jsonable_encoder(id)}",
|
|
211
|
+
f"api/storages/export/s3s/{jsonable_encoder(id)}",
|
|
212
|
+
method="GET",
|
|
213
|
+
request_options=request_options,
|
|
189
214
|
)
|
|
190
215
|
try:
|
|
191
216
|
if 200 <= _response.status_code < 300:
|
|
192
|
-
return
|
|
217
|
+
return typing.cast(
|
|
218
|
+
S3SExportStorage,
|
|
219
|
+
parse_obj_as(
|
|
220
|
+
type_=S3SExportStorage, # type: ignore
|
|
221
|
+
object_=_response.json(),
|
|
222
|
+
),
|
|
223
|
+
)
|
|
193
224
|
_response_json = _response.json()
|
|
194
225
|
except JSONDecodeError:
|
|
195
226
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -197,6 +228,7 @@ class S3SClient:
|
|
|
197
228
|
|
|
198
229
|
def delete(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> None:
|
|
199
230
|
"""
|
|
231
|
+
|
|
200
232
|
Delete a specific S3 export storage connection. You will need to provide the export storage ID. You can find this using [List export storages](list).
|
|
201
233
|
|
|
202
234
|
Parameters
|
|
@@ -213,7 +245,7 @@ class S3SClient:
|
|
|
213
245
|
|
|
214
246
|
Examples
|
|
215
247
|
--------
|
|
216
|
-
from label_studio_sdk
|
|
248
|
+
from label_studio_sdk import LabelStudio
|
|
217
249
|
|
|
218
250
|
client = LabelStudio(
|
|
219
251
|
api_key="YOUR_API_KEY",
|
|
@@ -223,7 +255,9 @@ class S3SClient:
|
|
|
223
255
|
)
|
|
224
256
|
"""
|
|
225
257
|
_response = self._client_wrapper.httpx_client.request(
|
|
226
|
-
f"api/storages/export/s3s/{jsonable_encoder(id)}",
|
|
258
|
+
f"api/storages/export/s3s/{jsonable_encoder(id)}",
|
|
259
|
+
method="DELETE",
|
|
260
|
+
request_options=request_options,
|
|
227
261
|
)
|
|
228
262
|
try:
|
|
229
263
|
if 200 <= _response.status_code < 300:
|
|
@@ -250,6 +284,7 @@ class S3SClient:
|
|
|
250
284
|
request_options: typing.Optional[RequestOptions] = None,
|
|
251
285
|
) -> S3SExportStorage:
|
|
252
286
|
"""
|
|
287
|
+
|
|
253
288
|
Update a specific S3 export storage connection. You will need to provide the export storage ID. You can find this using [List export storages](list).
|
|
254
289
|
|
|
255
290
|
Parameters
|
|
@@ -297,7 +332,7 @@ class S3SClient:
|
|
|
297
332
|
|
|
298
333
|
Examples
|
|
299
334
|
--------
|
|
300
|
-
from label_studio_sdk
|
|
335
|
+
from label_studio_sdk import LabelStudio
|
|
301
336
|
|
|
302
337
|
client = LabelStudio(
|
|
303
338
|
api_key="YOUR_API_KEY",
|
|
@@ -321,12 +356,21 @@ class S3SClient:
|
|
|
321
356
|
"region_name": region_name,
|
|
322
357
|
"s3_endpoint": s3endpoint,
|
|
323
358
|
},
|
|
359
|
+
headers={
|
|
360
|
+
"content-type": "application/json",
|
|
361
|
+
},
|
|
324
362
|
request_options=request_options,
|
|
325
363
|
omit=OMIT,
|
|
326
364
|
)
|
|
327
365
|
try:
|
|
328
366
|
if 200 <= _response.status_code < 300:
|
|
329
|
-
return
|
|
367
|
+
return typing.cast(
|
|
368
|
+
S3SExportStorage,
|
|
369
|
+
parse_obj_as(
|
|
370
|
+
type_=S3SExportStorage, # type: ignore
|
|
371
|
+
object_=_response.json(),
|
|
372
|
+
),
|
|
373
|
+
)
|
|
330
374
|
_response_json = _response.json()
|
|
331
375
|
except JSONDecodeError:
|
|
332
376
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -348,6 +392,7 @@ class S3SClient:
|
|
|
348
392
|
request_options: typing.Optional[RequestOptions] = None,
|
|
349
393
|
) -> None:
|
|
350
394
|
"""
|
|
395
|
+
|
|
351
396
|
Validate a specific S3 export storage connection. This is useful to ensure that the storage configuration settings are correct and operational before attempting to export data.
|
|
352
397
|
|
|
353
398
|
Parameters
|
|
@@ -391,7 +436,7 @@ class S3SClient:
|
|
|
391
436
|
|
|
392
437
|
Examples
|
|
393
438
|
--------
|
|
394
|
-
from label_studio_sdk
|
|
439
|
+
from label_studio_sdk import LabelStudio
|
|
395
440
|
|
|
396
441
|
client = LabelStudio(
|
|
397
442
|
api_key="YOUR_API_KEY",
|
|
@@ -413,6 +458,9 @@ class S3SClient:
|
|
|
413
458
|
"region_name": region_name,
|
|
414
459
|
"s3_endpoint": s3endpoint,
|
|
415
460
|
},
|
|
461
|
+
headers={
|
|
462
|
+
"content-type": "application/json",
|
|
463
|
+
},
|
|
416
464
|
request_options=request_options,
|
|
417
465
|
omit=OMIT,
|
|
418
466
|
)
|
|
@@ -433,6 +481,7 @@ class AsyncS3SClient:
|
|
|
433
481
|
self, *, project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None
|
|
434
482
|
) -> typing.List[S3SExportStorage]:
|
|
435
483
|
"""
|
|
484
|
+
|
|
436
485
|
You can connect your S3 bucket to Label Studio as a source storage or target storage. Use this API request to get a list of all S3 export (target) storage connections for a specific project.
|
|
437
486
|
|
|
438
487
|
The project ID can be found in the URL when viewing the project in Label Studio, or you can retrieve all project IDs using [List all projects](../projects/list).
|
|
@@ -454,19 +503,38 @@ class AsyncS3SClient:
|
|
|
454
503
|
|
|
455
504
|
Examples
|
|
456
505
|
--------
|
|
457
|
-
|
|
506
|
+
import asyncio
|
|
507
|
+
|
|
508
|
+
from label_studio_sdk import AsyncLabelStudio
|
|
458
509
|
|
|
459
510
|
client = AsyncLabelStudio(
|
|
460
511
|
api_key="YOUR_API_KEY",
|
|
461
512
|
)
|
|
462
|
-
|
|
513
|
+
|
|
514
|
+
|
|
515
|
+
async def main() -> None:
|
|
516
|
+
await client.export_storage.s3s.list()
|
|
517
|
+
|
|
518
|
+
|
|
519
|
+
asyncio.run(main())
|
|
463
520
|
"""
|
|
464
521
|
_response = await self._client_wrapper.httpx_client.request(
|
|
465
|
-
"api/storages/export/s3s",
|
|
522
|
+
"api/storages/export/s3s",
|
|
523
|
+
method="GET",
|
|
524
|
+
params={
|
|
525
|
+
"project": project,
|
|
526
|
+
},
|
|
527
|
+
request_options=request_options,
|
|
466
528
|
)
|
|
467
529
|
try:
|
|
468
530
|
if 200 <= _response.status_code < 300:
|
|
469
|
-
return
|
|
531
|
+
return typing.cast(
|
|
532
|
+
typing.List[S3SExportStorage],
|
|
533
|
+
parse_obj_as(
|
|
534
|
+
type_=typing.List[S3SExportStorage], # type: ignore
|
|
535
|
+
object_=_response.json(),
|
|
536
|
+
),
|
|
537
|
+
)
|
|
470
538
|
_response_json = _response.json()
|
|
471
539
|
except JSONDecodeError:
|
|
472
540
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -488,6 +556,7 @@ class AsyncS3SClient:
|
|
|
488
556
|
request_options: typing.Optional[RequestOptions] = None,
|
|
489
557
|
) -> S3SExportStorage:
|
|
490
558
|
"""
|
|
559
|
+
|
|
491
560
|
Create a new target storage connection to a S3 bucket with IAM role access.
|
|
492
561
|
|
|
493
562
|
For information about the required fields and prerequisites, see [Amazon S3](https://docs.humansignal.com/guide/storage#Set-up-an-S3-connection-with-IAM-role-access) in the Label Studio documentation.
|
|
@@ -534,12 +603,20 @@ class AsyncS3SClient:
|
|
|
534
603
|
|
|
535
604
|
Examples
|
|
536
605
|
--------
|
|
537
|
-
|
|
606
|
+
import asyncio
|
|
607
|
+
|
|
608
|
+
from label_studio_sdk import AsyncLabelStudio
|
|
538
609
|
|
|
539
610
|
client = AsyncLabelStudio(
|
|
540
611
|
api_key="YOUR_API_KEY",
|
|
541
612
|
)
|
|
542
|
-
|
|
613
|
+
|
|
614
|
+
|
|
615
|
+
async def main() -> None:
|
|
616
|
+
await client.export_storage.s3s.create()
|
|
617
|
+
|
|
618
|
+
|
|
619
|
+
asyncio.run(main())
|
|
543
620
|
"""
|
|
544
621
|
_response = await self._client_wrapper.httpx_client.request(
|
|
545
622
|
"api/storages/export/s3s",
|
|
@@ -556,12 +633,21 @@ class AsyncS3SClient:
|
|
|
556
633
|
"region_name": region_name,
|
|
557
634
|
"s3_endpoint": s3endpoint,
|
|
558
635
|
},
|
|
636
|
+
headers={
|
|
637
|
+
"content-type": "application/json",
|
|
638
|
+
},
|
|
559
639
|
request_options=request_options,
|
|
560
640
|
omit=OMIT,
|
|
561
641
|
)
|
|
562
642
|
try:
|
|
563
643
|
if 200 <= _response.status_code < 300:
|
|
564
|
-
return
|
|
644
|
+
return typing.cast(
|
|
645
|
+
S3SExportStorage,
|
|
646
|
+
parse_obj_as(
|
|
647
|
+
type_=S3SExportStorage, # type: ignore
|
|
648
|
+
object_=_response.json(),
|
|
649
|
+
),
|
|
650
|
+
)
|
|
565
651
|
_response_json = _response.json()
|
|
566
652
|
except JSONDecodeError:
|
|
567
653
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -569,6 +655,7 @@ class AsyncS3SClient:
|
|
|
569
655
|
|
|
570
656
|
async def get(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> S3SExportStorage:
|
|
571
657
|
"""
|
|
658
|
+
|
|
572
659
|
Get a specific S3 export storage connection. You will need to provide the export storage ID. You can find this using [List export storages](list).
|
|
573
660
|
|
|
574
661
|
Parameters
|
|
@@ -586,21 +673,37 @@ class AsyncS3SClient:
|
|
|
586
673
|
|
|
587
674
|
Examples
|
|
588
675
|
--------
|
|
589
|
-
|
|
676
|
+
import asyncio
|
|
677
|
+
|
|
678
|
+
from label_studio_sdk import AsyncLabelStudio
|
|
590
679
|
|
|
591
680
|
client = AsyncLabelStudio(
|
|
592
681
|
api_key="YOUR_API_KEY",
|
|
593
682
|
)
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
)
|
|
683
|
+
|
|
684
|
+
|
|
685
|
+
async def main() -> None:
|
|
686
|
+
await client.export_storage.s3s.get(
|
|
687
|
+
id=1,
|
|
688
|
+
)
|
|
689
|
+
|
|
690
|
+
|
|
691
|
+
asyncio.run(main())
|
|
597
692
|
"""
|
|
598
693
|
_response = await self._client_wrapper.httpx_client.request(
|
|
599
|
-
f"api/storages/export/s3s/{jsonable_encoder(id)}",
|
|
694
|
+
f"api/storages/export/s3s/{jsonable_encoder(id)}",
|
|
695
|
+
method="GET",
|
|
696
|
+
request_options=request_options,
|
|
600
697
|
)
|
|
601
698
|
try:
|
|
602
699
|
if 200 <= _response.status_code < 300:
|
|
603
|
-
return
|
|
700
|
+
return typing.cast(
|
|
701
|
+
S3SExportStorage,
|
|
702
|
+
parse_obj_as(
|
|
703
|
+
type_=S3SExportStorage, # type: ignore
|
|
704
|
+
object_=_response.json(),
|
|
705
|
+
),
|
|
706
|
+
)
|
|
604
707
|
_response_json = _response.json()
|
|
605
708
|
except JSONDecodeError:
|
|
606
709
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -608,6 +711,7 @@ class AsyncS3SClient:
|
|
|
608
711
|
|
|
609
712
|
async def delete(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> None:
|
|
610
713
|
"""
|
|
714
|
+
|
|
611
715
|
Delete a specific S3 export storage connection. You will need to provide the export storage ID. You can find this using [List export storages](list).
|
|
612
716
|
|
|
613
717
|
Parameters
|
|
@@ -624,17 +728,27 @@ class AsyncS3SClient:
|
|
|
624
728
|
|
|
625
729
|
Examples
|
|
626
730
|
--------
|
|
627
|
-
|
|
731
|
+
import asyncio
|
|
732
|
+
|
|
733
|
+
from label_studio_sdk import AsyncLabelStudio
|
|
628
734
|
|
|
629
735
|
client = AsyncLabelStudio(
|
|
630
736
|
api_key="YOUR_API_KEY",
|
|
631
737
|
)
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
)
|
|
738
|
+
|
|
739
|
+
|
|
740
|
+
async def main() -> None:
|
|
741
|
+
await client.export_storage.s3s.delete(
|
|
742
|
+
id=1,
|
|
743
|
+
)
|
|
744
|
+
|
|
745
|
+
|
|
746
|
+
asyncio.run(main())
|
|
635
747
|
"""
|
|
636
748
|
_response = await self._client_wrapper.httpx_client.request(
|
|
637
|
-
f"api/storages/export/s3s/{jsonable_encoder(id)}",
|
|
749
|
+
f"api/storages/export/s3s/{jsonable_encoder(id)}",
|
|
750
|
+
method="DELETE",
|
|
751
|
+
request_options=request_options,
|
|
638
752
|
)
|
|
639
753
|
try:
|
|
640
754
|
if 200 <= _response.status_code < 300:
|
|
@@ -661,6 +775,7 @@ class AsyncS3SClient:
|
|
|
661
775
|
request_options: typing.Optional[RequestOptions] = None,
|
|
662
776
|
) -> S3SExportStorage:
|
|
663
777
|
"""
|
|
778
|
+
|
|
664
779
|
Update a specific S3 export storage connection. You will need to provide the export storage ID. You can find this using [List export storages](list).
|
|
665
780
|
|
|
666
781
|
Parameters
|
|
@@ -708,14 +823,22 @@ class AsyncS3SClient:
|
|
|
708
823
|
|
|
709
824
|
Examples
|
|
710
825
|
--------
|
|
711
|
-
|
|
826
|
+
import asyncio
|
|
827
|
+
|
|
828
|
+
from label_studio_sdk import AsyncLabelStudio
|
|
712
829
|
|
|
713
830
|
client = AsyncLabelStudio(
|
|
714
831
|
api_key="YOUR_API_KEY",
|
|
715
832
|
)
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
)
|
|
833
|
+
|
|
834
|
+
|
|
835
|
+
async def main() -> None:
|
|
836
|
+
await client.export_storage.s3s.update(
|
|
837
|
+
id=1,
|
|
838
|
+
)
|
|
839
|
+
|
|
840
|
+
|
|
841
|
+
asyncio.run(main())
|
|
719
842
|
"""
|
|
720
843
|
_response = await self._client_wrapper.httpx_client.request(
|
|
721
844
|
f"api/storages/export/s3s/{jsonable_encoder(id)}",
|
|
@@ -732,12 +855,21 @@ class AsyncS3SClient:
|
|
|
732
855
|
"region_name": region_name,
|
|
733
856
|
"s3_endpoint": s3endpoint,
|
|
734
857
|
},
|
|
858
|
+
headers={
|
|
859
|
+
"content-type": "application/json",
|
|
860
|
+
},
|
|
735
861
|
request_options=request_options,
|
|
736
862
|
omit=OMIT,
|
|
737
863
|
)
|
|
738
864
|
try:
|
|
739
865
|
if 200 <= _response.status_code < 300:
|
|
740
|
-
return
|
|
866
|
+
return typing.cast(
|
|
867
|
+
S3SExportStorage,
|
|
868
|
+
parse_obj_as(
|
|
869
|
+
type_=S3SExportStorage, # type: ignore
|
|
870
|
+
object_=_response.json(),
|
|
871
|
+
),
|
|
872
|
+
)
|
|
741
873
|
_response_json = _response.json()
|
|
742
874
|
except JSONDecodeError:
|
|
743
875
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -759,6 +891,7 @@ class AsyncS3SClient:
|
|
|
759
891
|
request_options: typing.Optional[RequestOptions] = None,
|
|
760
892
|
) -> None:
|
|
761
893
|
"""
|
|
894
|
+
|
|
762
895
|
Validate a specific S3 export storage connection. This is useful to ensure that the storage configuration settings are correct and operational before attempting to export data.
|
|
763
896
|
|
|
764
897
|
Parameters
|
|
@@ -802,12 +935,20 @@ class AsyncS3SClient:
|
|
|
802
935
|
|
|
803
936
|
Examples
|
|
804
937
|
--------
|
|
805
|
-
|
|
938
|
+
import asyncio
|
|
939
|
+
|
|
940
|
+
from label_studio_sdk import AsyncLabelStudio
|
|
806
941
|
|
|
807
942
|
client = AsyncLabelStudio(
|
|
808
943
|
api_key="YOUR_API_KEY",
|
|
809
944
|
)
|
|
810
|
-
|
|
945
|
+
|
|
946
|
+
|
|
947
|
+
async def main() -> None:
|
|
948
|
+
await client.export_storage.s3s.validate()
|
|
949
|
+
|
|
950
|
+
|
|
951
|
+
asyncio.run(main())
|
|
811
952
|
"""
|
|
812
953
|
_response = await self._client_wrapper.httpx_client.request(
|
|
813
954
|
"api/storages/export/s3s/validate",
|
|
@@ -824,6 +965,9 @@ class AsyncS3SClient:
|
|
|
824
965
|
"region_name": region_name,
|
|
825
966
|
"s3_endpoint": s3endpoint,
|
|
826
967
|
},
|
|
968
|
+
headers={
|
|
969
|
+
"content-type": "application/json",
|
|
970
|
+
},
|
|
827
971
|
request_options=request_options,
|
|
828
972
|
omit=OMIT,
|
|
829
973
|
)
|
|
@@ -1,30 +1,20 @@
|
|
|
1
1
|
# This file was auto-generated by Fern from our API Definition.
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
from ...core.pydantic_utilities import UniversalBaseModel
|
|
4
4
|
import typing
|
|
5
|
+
from ...core.pydantic_utilities import IS_PYDANTIC_V2
|
|
6
|
+
import pydantic
|
|
5
7
|
|
|
6
|
-
from ...core.datetime_utils import serialize_datetime
|
|
7
|
-
from ...core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
class ExportStorageListTypesResponseItem(pydantic_v1.BaseModel):
|
|
9
|
+
class ExportStorageListTypesResponseItem(UniversalBaseModel):
|
|
11
10
|
name: typing.Optional[str] = None
|
|
12
11
|
title: typing.Optional[str] = None
|
|
13
12
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
|
|
19
|
-
kwargs_with_defaults_exclude_unset: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
|
|
20
|
-
kwargs_with_defaults_exclude_none: typing.Any = {"by_alias": True, "exclude_none": True, **kwargs}
|
|
21
|
-
|
|
22
|
-
return deep_union_pydantic_dicts(
|
|
23
|
-
super().dict(**kwargs_with_defaults_exclude_unset), super().dict(**kwargs_with_defaults_exclude_none)
|
|
24
|
-
)
|
|
13
|
+
if IS_PYDANTIC_V2:
|
|
14
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
15
|
+
else:
|
|
25
16
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
json_encoders = {dt.datetime: serialize_datetime}
|
|
17
|
+
class Config:
|
|
18
|
+
frozen = True
|
|
19
|
+
smart_union = True
|
|
20
|
+
extra = pydantic.Extra.allow
|