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
label_studio_sdk/users/client.py
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
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.users_reset_token_response import UsersResetTokenResponse
|
|
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
|
-
from ..core.jsonable_encoder import jsonable_encoder
|
|
9
|
-
from ..core.pydantic_utilities import pydantic_v1
|
|
10
|
-
from ..core.request_options import RequestOptions
|
|
11
|
-
from ..types.base_user import BaseUser
|
|
12
10
|
from .types.users_get_token_response import UsersGetTokenResponse
|
|
13
|
-
from
|
|
11
|
+
from ..types.base_user import BaseUser
|
|
12
|
+
from ..core.jsonable_encoder import jsonable_encoder
|
|
13
|
+
from ..core.client_wrapper import AsyncClientWrapper
|
|
14
14
|
|
|
15
15
|
# this is used as the default value for optional parameters
|
|
16
16
|
OMIT = typing.cast(typing.Any, ...)
|
|
@@ -36,7 +36,7 @@ class UsersClient:
|
|
|
36
36
|
|
|
37
37
|
Examples
|
|
38
38
|
--------
|
|
39
|
-
from label_studio_sdk
|
|
39
|
+
from label_studio_sdk import LabelStudio
|
|
40
40
|
|
|
41
41
|
client = LabelStudio(
|
|
42
42
|
api_key="YOUR_API_KEY",
|
|
@@ -44,11 +44,19 @@ class UsersClient:
|
|
|
44
44
|
client.users.reset_token()
|
|
45
45
|
"""
|
|
46
46
|
_response = self._client_wrapper.httpx_client.request(
|
|
47
|
-
"api/current-user/reset-token/",
|
|
47
|
+
"api/current-user/reset-token/",
|
|
48
|
+
method="POST",
|
|
49
|
+
request_options=request_options,
|
|
48
50
|
)
|
|
49
51
|
try:
|
|
50
52
|
if 200 <= _response.status_code < 300:
|
|
51
|
-
return
|
|
53
|
+
return typing.cast(
|
|
54
|
+
UsersResetTokenResponse,
|
|
55
|
+
parse_obj_as(
|
|
56
|
+
type_=UsersResetTokenResponse, # type: ignore
|
|
57
|
+
object_=_response.json(),
|
|
58
|
+
),
|
|
59
|
+
)
|
|
52
60
|
_response_json = _response.json()
|
|
53
61
|
except JSONDecodeError:
|
|
54
62
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -70,7 +78,7 @@ class UsersClient:
|
|
|
70
78
|
|
|
71
79
|
Examples
|
|
72
80
|
--------
|
|
73
|
-
from label_studio_sdk
|
|
81
|
+
from label_studio_sdk import LabelStudio
|
|
74
82
|
|
|
75
83
|
client = LabelStudio(
|
|
76
84
|
api_key="YOUR_API_KEY",
|
|
@@ -78,11 +86,19 @@ class UsersClient:
|
|
|
78
86
|
client.users.get_token()
|
|
79
87
|
"""
|
|
80
88
|
_response = self._client_wrapper.httpx_client.request(
|
|
81
|
-
"api/current-user/token",
|
|
89
|
+
"api/current-user/token",
|
|
90
|
+
method="GET",
|
|
91
|
+
request_options=request_options,
|
|
82
92
|
)
|
|
83
93
|
try:
|
|
84
94
|
if 200 <= _response.status_code < 300:
|
|
85
|
-
return
|
|
95
|
+
return typing.cast(
|
|
96
|
+
UsersGetTokenResponse,
|
|
97
|
+
parse_obj_as(
|
|
98
|
+
type_=UsersGetTokenResponse, # type: ignore
|
|
99
|
+
object_=_response.json(),
|
|
100
|
+
),
|
|
101
|
+
)
|
|
86
102
|
_response_json = _response.json()
|
|
87
103
|
except JSONDecodeError:
|
|
88
104
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -104,7 +120,7 @@ class UsersClient:
|
|
|
104
120
|
|
|
105
121
|
Examples
|
|
106
122
|
--------
|
|
107
|
-
from label_studio_sdk
|
|
123
|
+
from label_studio_sdk import LabelStudio
|
|
108
124
|
|
|
109
125
|
client = LabelStudio(
|
|
110
126
|
api_key="YOUR_API_KEY",
|
|
@@ -112,11 +128,19 @@ class UsersClient:
|
|
|
112
128
|
client.users.whoami()
|
|
113
129
|
"""
|
|
114
130
|
_response = self._client_wrapper.httpx_client.request(
|
|
115
|
-
"api/current-user/whoami",
|
|
131
|
+
"api/current-user/whoami",
|
|
132
|
+
method="GET",
|
|
133
|
+
request_options=request_options,
|
|
116
134
|
)
|
|
117
135
|
try:
|
|
118
136
|
if 200 <= _response.status_code < 300:
|
|
119
|
-
return
|
|
137
|
+
return typing.cast(
|
|
138
|
+
BaseUser,
|
|
139
|
+
parse_obj_as(
|
|
140
|
+
type_=BaseUser, # type: ignore
|
|
141
|
+
object_=_response.json(),
|
|
142
|
+
),
|
|
143
|
+
)
|
|
120
144
|
_response_json = _response.json()
|
|
121
145
|
except JSONDecodeError:
|
|
122
146
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -124,6 +148,7 @@ class UsersClient:
|
|
|
124
148
|
|
|
125
149
|
def list(self, *, request_options: typing.Optional[RequestOptions] = None) -> typing.List[BaseUser]:
|
|
126
150
|
"""
|
|
151
|
+
|
|
127
152
|
List all users in your Label Studio organization.
|
|
128
153
|
|
|
129
154
|
Parameters
|
|
@@ -138,7 +163,7 @@ class UsersClient:
|
|
|
138
163
|
|
|
139
164
|
Examples
|
|
140
165
|
--------
|
|
141
|
-
from label_studio_sdk
|
|
166
|
+
from label_studio_sdk import LabelStudio
|
|
142
167
|
|
|
143
168
|
client = LabelStudio(
|
|
144
169
|
api_key="YOUR_API_KEY",
|
|
@@ -146,11 +171,19 @@ class UsersClient:
|
|
|
146
171
|
client.users.list()
|
|
147
172
|
"""
|
|
148
173
|
_response = self._client_wrapper.httpx_client.request(
|
|
149
|
-
"api/users/",
|
|
174
|
+
"api/users/",
|
|
175
|
+
method="GET",
|
|
176
|
+
request_options=request_options,
|
|
150
177
|
)
|
|
151
178
|
try:
|
|
152
179
|
if 200 <= _response.status_code < 300:
|
|
153
|
-
return
|
|
180
|
+
return typing.cast(
|
|
181
|
+
typing.List[BaseUser],
|
|
182
|
+
parse_obj_as(
|
|
183
|
+
type_=typing.List[BaseUser], # type: ignore
|
|
184
|
+
object_=_response.json(),
|
|
185
|
+
),
|
|
186
|
+
)
|
|
154
187
|
_response_json = _response.json()
|
|
155
188
|
except JSONDecodeError:
|
|
156
189
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -171,6 +204,7 @@ class UsersClient:
|
|
|
171
204
|
request_options: typing.Optional[RequestOptions] = None,
|
|
172
205
|
) -> BaseUser:
|
|
173
206
|
"""
|
|
207
|
+
|
|
174
208
|
Create a user in Label Studio.
|
|
175
209
|
|
|
176
210
|
Parameters
|
|
@@ -212,7 +246,7 @@ class UsersClient:
|
|
|
212
246
|
|
|
213
247
|
Examples
|
|
214
248
|
--------
|
|
215
|
-
from label_studio_sdk
|
|
249
|
+
from label_studio_sdk import LabelStudio
|
|
216
250
|
|
|
217
251
|
client = LabelStudio(
|
|
218
252
|
api_key="YOUR_API_KEY",
|
|
@@ -233,12 +267,21 @@ class UsersClient:
|
|
|
233
267
|
"phone": phone,
|
|
234
268
|
"allow_newsletters": allow_newsletters,
|
|
235
269
|
},
|
|
270
|
+
headers={
|
|
271
|
+
"content-type": "application/json",
|
|
272
|
+
},
|
|
236
273
|
request_options=request_options,
|
|
237
274
|
omit=OMIT,
|
|
238
275
|
)
|
|
239
276
|
try:
|
|
240
277
|
if 200 <= _response.status_code < 300:
|
|
241
|
-
return
|
|
278
|
+
return typing.cast(
|
|
279
|
+
BaseUser,
|
|
280
|
+
parse_obj_as(
|
|
281
|
+
type_=BaseUser, # type: ignore
|
|
282
|
+
object_=_response.json(),
|
|
283
|
+
),
|
|
284
|
+
)
|
|
242
285
|
_response_json = _response.json()
|
|
243
286
|
except JSONDecodeError:
|
|
244
287
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -246,6 +289,7 @@ class UsersClient:
|
|
|
246
289
|
|
|
247
290
|
def get(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> BaseUser:
|
|
248
291
|
"""
|
|
292
|
+
|
|
249
293
|
Get info about a specific Label Studio user.
|
|
250
294
|
You will need to provide their user ID. You can find a list of all user IDs using [List users](list).
|
|
251
295
|
|
|
@@ -264,7 +308,7 @@ class UsersClient:
|
|
|
264
308
|
|
|
265
309
|
Examples
|
|
266
310
|
--------
|
|
267
|
-
from label_studio_sdk
|
|
311
|
+
from label_studio_sdk import LabelStudio
|
|
268
312
|
|
|
269
313
|
client = LabelStudio(
|
|
270
314
|
api_key="YOUR_API_KEY",
|
|
@@ -274,11 +318,19 @@ class UsersClient:
|
|
|
274
318
|
)
|
|
275
319
|
"""
|
|
276
320
|
_response = self._client_wrapper.httpx_client.request(
|
|
277
|
-
f"api/users/{jsonable_encoder(id)}/",
|
|
321
|
+
f"api/users/{jsonable_encoder(id)}/",
|
|
322
|
+
method="GET",
|
|
323
|
+
request_options=request_options,
|
|
278
324
|
)
|
|
279
325
|
try:
|
|
280
326
|
if 200 <= _response.status_code < 300:
|
|
281
|
-
return
|
|
327
|
+
return typing.cast(
|
|
328
|
+
BaseUser,
|
|
329
|
+
parse_obj_as(
|
|
330
|
+
type_=BaseUser, # type: ignore
|
|
331
|
+
object_=_response.json(),
|
|
332
|
+
),
|
|
333
|
+
)
|
|
282
334
|
_response_json = _response.json()
|
|
283
335
|
except JSONDecodeError:
|
|
284
336
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -286,6 +338,7 @@ class UsersClient:
|
|
|
286
338
|
|
|
287
339
|
def delete(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> None:
|
|
288
340
|
"""
|
|
341
|
+
|
|
289
342
|
Delete a specific Label Studio user.
|
|
290
343
|
|
|
291
344
|
You will need to provide their user ID. You can find a list of all user IDs using [List users](list).
|
|
@@ -306,7 +359,7 @@ class UsersClient:
|
|
|
306
359
|
|
|
307
360
|
Examples
|
|
308
361
|
--------
|
|
309
|
-
from label_studio_sdk
|
|
362
|
+
from label_studio_sdk import LabelStudio
|
|
310
363
|
|
|
311
364
|
client = LabelStudio(
|
|
312
365
|
api_key="YOUR_API_KEY",
|
|
@@ -316,7 +369,9 @@ class UsersClient:
|
|
|
316
369
|
)
|
|
317
370
|
"""
|
|
318
371
|
_response = self._client_wrapper.httpx_client.request(
|
|
319
|
-
f"api/users/{jsonable_encoder(id)}/",
|
|
372
|
+
f"api/users/{jsonable_encoder(id)}/",
|
|
373
|
+
method="DELETE",
|
|
374
|
+
request_options=request_options,
|
|
320
375
|
)
|
|
321
376
|
try:
|
|
322
377
|
if 200 <= _response.status_code < 300:
|
|
@@ -342,6 +397,7 @@ class UsersClient:
|
|
|
342
397
|
request_options: typing.Optional[RequestOptions] = None,
|
|
343
398
|
) -> BaseUser:
|
|
344
399
|
"""
|
|
400
|
+
|
|
345
401
|
Update details for a specific Label Studio user, such as their name or contact information.
|
|
346
402
|
|
|
347
403
|
You will need to provide their user ID. You can find a list of all user IDs using [List users](list).
|
|
@@ -388,7 +444,7 @@ class UsersClient:
|
|
|
388
444
|
|
|
389
445
|
Examples
|
|
390
446
|
--------
|
|
391
|
-
from label_studio_sdk
|
|
447
|
+
from label_studio_sdk import LabelStudio
|
|
392
448
|
|
|
393
449
|
client = LabelStudio(
|
|
394
450
|
api_key="YOUR_API_KEY",
|
|
@@ -411,12 +467,21 @@ class UsersClient:
|
|
|
411
467
|
"phone": phone,
|
|
412
468
|
"allow_newsletters": allow_newsletters,
|
|
413
469
|
},
|
|
470
|
+
headers={
|
|
471
|
+
"content-type": "application/json",
|
|
472
|
+
},
|
|
414
473
|
request_options=request_options,
|
|
415
474
|
omit=OMIT,
|
|
416
475
|
)
|
|
417
476
|
try:
|
|
418
477
|
if 200 <= _response.status_code < 300:
|
|
419
|
-
return
|
|
478
|
+
return typing.cast(
|
|
479
|
+
BaseUser,
|
|
480
|
+
parse_obj_as(
|
|
481
|
+
type_=BaseUser, # type: ignore
|
|
482
|
+
object_=_response.json(),
|
|
483
|
+
),
|
|
484
|
+
)
|
|
420
485
|
_response_json = _response.json()
|
|
421
486
|
except JSONDecodeError:
|
|
422
487
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -443,19 +508,35 @@ class AsyncUsersClient:
|
|
|
443
508
|
|
|
444
509
|
Examples
|
|
445
510
|
--------
|
|
446
|
-
|
|
511
|
+
import asyncio
|
|
512
|
+
|
|
513
|
+
from label_studio_sdk import AsyncLabelStudio
|
|
447
514
|
|
|
448
515
|
client = AsyncLabelStudio(
|
|
449
516
|
api_key="YOUR_API_KEY",
|
|
450
517
|
)
|
|
451
|
-
|
|
518
|
+
|
|
519
|
+
|
|
520
|
+
async def main() -> None:
|
|
521
|
+
await client.users.reset_token()
|
|
522
|
+
|
|
523
|
+
|
|
524
|
+
asyncio.run(main())
|
|
452
525
|
"""
|
|
453
526
|
_response = await self._client_wrapper.httpx_client.request(
|
|
454
|
-
"api/current-user/reset-token/",
|
|
527
|
+
"api/current-user/reset-token/",
|
|
528
|
+
method="POST",
|
|
529
|
+
request_options=request_options,
|
|
455
530
|
)
|
|
456
531
|
try:
|
|
457
532
|
if 200 <= _response.status_code < 300:
|
|
458
|
-
return
|
|
533
|
+
return typing.cast(
|
|
534
|
+
UsersResetTokenResponse,
|
|
535
|
+
parse_obj_as(
|
|
536
|
+
type_=UsersResetTokenResponse, # type: ignore
|
|
537
|
+
object_=_response.json(),
|
|
538
|
+
),
|
|
539
|
+
)
|
|
459
540
|
_response_json = _response.json()
|
|
460
541
|
except JSONDecodeError:
|
|
461
542
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -477,19 +558,35 @@ class AsyncUsersClient:
|
|
|
477
558
|
|
|
478
559
|
Examples
|
|
479
560
|
--------
|
|
480
|
-
|
|
561
|
+
import asyncio
|
|
562
|
+
|
|
563
|
+
from label_studio_sdk import AsyncLabelStudio
|
|
481
564
|
|
|
482
565
|
client = AsyncLabelStudio(
|
|
483
566
|
api_key="YOUR_API_KEY",
|
|
484
567
|
)
|
|
485
|
-
|
|
568
|
+
|
|
569
|
+
|
|
570
|
+
async def main() -> None:
|
|
571
|
+
await client.users.get_token()
|
|
572
|
+
|
|
573
|
+
|
|
574
|
+
asyncio.run(main())
|
|
486
575
|
"""
|
|
487
576
|
_response = await self._client_wrapper.httpx_client.request(
|
|
488
|
-
"api/current-user/token",
|
|
577
|
+
"api/current-user/token",
|
|
578
|
+
method="GET",
|
|
579
|
+
request_options=request_options,
|
|
489
580
|
)
|
|
490
581
|
try:
|
|
491
582
|
if 200 <= _response.status_code < 300:
|
|
492
|
-
return
|
|
583
|
+
return typing.cast(
|
|
584
|
+
UsersGetTokenResponse,
|
|
585
|
+
parse_obj_as(
|
|
586
|
+
type_=UsersGetTokenResponse, # type: ignore
|
|
587
|
+
object_=_response.json(),
|
|
588
|
+
),
|
|
589
|
+
)
|
|
493
590
|
_response_json = _response.json()
|
|
494
591
|
except JSONDecodeError:
|
|
495
592
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -511,19 +608,35 @@ class AsyncUsersClient:
|
|
|
511
608
|
|
|
512
609
|
Examples
|
|
513
610
|
--------
|
|
514
|
-
|
|
611
|
+
import asyncio
|
|
612
|
+
|
|
613
|
+
from label_studio_sdk import AsyncLabelStudio
|
|
515
614
|
|
|
516
615
|
client = AsyncLabelStudio(
|
|
517
616
|
api_key="YOUR_API_KEY",
|
|
518
617
|
)
|
|
519
|
-
|
|
618
|
+
|
|
619
|
+
|
|
620
|
+
async def main() -> None:
|
|
621
|
+
await client.users.whoami()
|
|
622
|
+
|
|
623
|
+
|
|
624
|
+
asyncio.run(main())
|
|
520
625
|
"""
|
|
521
626
|
_response = await self._client_wrapper.httpx_client.request(
|
|
522
|
-
"api/current-user/whoami",
|
|
627
|
+
"api/current-user/whoami",
|
|
628
|
+
method="GET",
|
|
629
|
+
request_options=request_options,
|
|
523
630
|
)
|
|
524
631
|
try:
|
|
525
632
|
if 200 <= _response.status_code < 300:
|
|
526
|
-
return
|
|
633
|
+
return typing.cast(
|
|
634
|
+
BaseUser,
|
|
635
|
+
parse_obj_as(
|
|
636
|
+
type_=BaseUser, # type: ignore
|
|
637
|
+
object_=_response.json(),
|
|
638
|
+
),
|
|
639
|
+
)
|
|
527
640
|
_response_json = _response.json()
|
|
528
641
|
except JSONDecodeError:
|
|
529
642
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -531,6 +644,7 @@ class AsyncUsersClient:
|
|
|
531
644
|
|
|
532
645
|
async def list(self, *, request_options: typing.Optional[RequestOptions] = None) -> typing.List[BaseUser]:
|
|
533
646
|
"""
|
|
647
|
+
|
|
534
648
|
List all users in your Label Studio organization.
|
|
535
649
|
|
|
536
650
|
Parameters
|
|
@@ -545,19 +659,35 @@ class AsyncUsersClient:
|
|
|
545
659
|
|
|
546
660
|
Examples
|
|
547
661
|
--------
|
|
548
|
-
|
|
662
|
+
import asyncio
|
|
663
|
+
|
|
664
|
+
from label_studio_sdk import AsyncLabelStudio
|
|
549
665
|
|
|
550
666
|
client = AsyncLabelStudio(
|
|
551
667
|
api_key="YOUR_API_KEY",
|
|
552
668
|
)
|
|
553
|
-
|
|
669
|
+
|
|
670
|
+
|
|
671
|
+
async def main() -> None:
|
|
672
|
+
await client.users.list()
|
|
673
|
+
|
|
674
|
+
|
|
675
|
+
asyncio.run(main())
|
|
554
676
|
"""
|
|
555
677
|
_response = await self._client_wrapper.httpx_client.request(
|
|
556
|
-
"api/users/",
|
|
678
|
+
"api/users/",
|
|
679
|
+
method="GET",
|
|
680
|
+
request_options=request_options,
|
|
557
681
|
)
|
|
558
682
|
try:
|
|
559
683
|
if 200 <= _response.status_code < 300:
|
|
560
|
-
return
|
|
684
|
+
return typing.cast(
|
|
685
|
+
typing.List[BaseUser],
|
|
686
|
+
parse_obj_as(
|
|
687
|
+
type_=typing.List[BaseUser], # type: ignore
|
|
688
|
+
object_=_response.json(),
|
|
689
|
+
),
|
|
690
|
+
)
|
|
561
691
|
_response_json = _response.json()
|
|
562
692
|
except JSONDecodeError:
|
|
563
693
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -578,6 +708,7 @@ class AsyncUsersClient:
|
|
|
578
708
|
request_options: typing.Optional[RequestOptions] = None,
|
|
579
709
|
) -> BaseUser:
|
|
580
710
|
"""
|
|
711
|
+
|
|
581
712
|
Create a user in Label Studio.
|
|
582
713
|
|
|
583
714
|
Parameters
|
|
@@ -619,12 +750,20 @@ class AsyncUsersClient:
|
|
|
619
750
|
|
|
620
751
|
Examples
|
|
621
752
|
--------
|
|
622
|
-
|
|
753
|
+
import asyncio
|
|
754
|
+
|
|
755
|
+
from label_studio_sdk import AsyncLabelStudio
|
|
623
756
|
|
|
624
757
|
client = AsyncLabelStudio(
|
|
625
758
|
api_key="YOUR_API_KEY",
|
|
626
759
|
)
|
|
627
|
-
|
|
760
|
+
|
|
761
|
+
|
|
762
|
+
async def main() -> None:
|
|
763
|
+
await client.users.create()
|
|
764
|
+
|
|
765
|
+
|
|
766
|
+
asyncio.run(main())
|
|
628
767
|
"""
|
|
629
768
|
_response = await self._client_wrapper.httpx_client.request(
|
|
630
769
|
"api/users/",
|
|
@@ -640,12 +779,21 @@ class AsyncUsersClient:
|
|
|
640
779
|
"phone": phone,
|
|
641
780
|
"allow_newsletters": allow_newsletters,
|
|
642
781
|
},
|
|
782
|
+
headers={
|
|
783
|
+
"content-type": "application/json",
|
|
784
|
+
},
|
|
643
785
|
request_options=request_options,
|
|
644
786
|
omit=OMIT,
|
|
645
787
|
)
|
|
646
788
|
try:
|
|
647
789
|
if 200 <= _response.status_code < 300:
|
|
648
|
-
return
|
|
790
|
+
return typing.cast(
|
|
791
|
+
BaseUser,
|
|
792
|
+
parse_obj_as(
|
|
793
|
+
type_=BaseUser, # type: ignore
|
|
794
|
+
object_=_response.json(),
|
|
795
|
+
),
|
|
796
|
+
)
|
|
649
797
|
_response_json = _response.json()
|
|
650
798
|
except JSONDecodeError:
|
|
651
799
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -653,6 +801,7 @@ class AsyncUsersClient:
|
|
|
653
801
|
|
|
654
802
|
async def get(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> BaseUser:
|
|
655
803
|
"""
|
|
804
|
+
|
|
656
805
|
Get info about a specific Label Studio user.
|
|
657
806
|
You will need to provide their user ID. You can find a list of all user IDs using [List users](list).
|
|
658
807
|
|
|
@@ -671,21 +820,37 @@ class AsyncUsersClient:
|
|
|
671
820
|
|
|
672
821
|
Examples
|
|
673
822
|
--------
|
|
674
|
-
|
|
823
|
+
import asyncio
|
|
824
|
+
|
|
825
|
+
from label_studio_sdk import AsyncLabelStudio
|
|
675
826
|
|
|
676
827
|
client = AsyncLabelStudio(
|
|
677
828
|
api_key="YOUR_API_KEY",
|
|
678
829
|
)
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
)
|
|
830
|
+
|
|
831
|
+
|
|
832
|
+
async def main() -> None:
|
|
833
|
+
await client.users.get(
|
|
834
|
+
id=1,
|
|
835
|
+
)
|
|
836
|
+
|
|
837
|
+
|
|
838
|
+
asyncio.run(main())
|
|
682
839
|
"""
|
|
683
840
|
_response = await self._client_wrapper.httpx_client.request(
|
|
684
|
-
f"api/users/{jsonable_encoder(id)}/",
|
|
841
|
+
f"api/users/{jsonable_encoder(id)}/",
|
|
842
|
+
method="GET",
|
|
843
|
+
request_options=request_options,
|
|
685
844
|
)
|
|
686
845
|
try:
|
|
687
846
|
if 200 <= _response.status_code < 300:
|
|
688
|
-
return
|
|
847
|
+
return typing.cast(
|
|
848
|
+
BaseUser,
|
|
849
|
+
parse_obj_as(
|
|
850
|
+
type_=BaseUser, # type: ignore
|
|
851
|
+
object_=_response.json(),
|
|
852
|
+
),
|
|
853
|
+
)
|
|
689
854
|
_response_json = _response.json()
|
|
690
855
|
except JSONDecodeError:
|
|
691
856
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -693,6 +858,7 @@ class AsyncUsersClient:
|
|
|
693
858
|
|
|
694
859
|
async def delete(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> None:
|
|
695
860
|
"""
|
|
861
|
+
|
|
696
862
|
Delete a specific Label Studio user.
|
|
697
863
|
|
|
698
864
|
You will need to provide their user ID. You can find a list of all user IDs using [List users](list).
|
|
@@ -713,17 +879,27 @@ class AsyncUsersClient:
|
|
|
713
879
|
|
|
714
880
|
Examples
|
|
715
881
|
--------
|
|
716
|
-
|
|
882
|
+
import asyncio
|
|
883
|
+
|
|
884
|
+
from label_studio_sdk import AsyncLabelStudio
|
|
717
885
|
|
|
718
886
|
client = AsyncLabelStudio(
|
|
719
887
|
api_key="YOUR_API_KEY",
|
|
720
888
|
)
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
)
|
|
889
|
+
|
|
890
|
+
|
|
891
|
+
async def main() -> None:
|
|
892
|
+
await client.users.delete(
|
|
893
|
+
id=1,
|
|
894
|
+
)
|
|
895
|
+
|
|
896
|
+
|
|
897
|
+
asyncio.run(main())
|
|
724
898
|
"""
|
|
725
899
|
_response = await self._client_wrapper.httpx_client.request(
|
|
726
|
-
f"api/users/{jsonable_encoder(id)}/",
|
|
900
|
+
f"api/users/{jsonable_encoder(id)}/",
|
|
901
|
+
method="DELETE",
|
|
902
|
+
request_options=request_options,
|
|
727
903
|
)
|
|
728
904
|
try:
|
|
729
905
|
if 200 <= _response.status_code < 300:
|
|
@@ -749,6 +925,7 @@ class AsyncUsersClient:
|
|
|
749
925
|
request_options: typing.Optional[RequestOptions] = None,
|
|
750
926
|
) -> BaseUser:
|
|
751
927
|
"""
|
|
928
|
+
|
|
752
929
|
Update details for a specific Label Studio user, such as their name or contact information.
|
|
753
930
|
|
|
754
931
|
You will need to provide their user ID. You can find a list of all user IDs using [List users](list).
|
|
@@ -795,14 +972,22 @@ class AsyncUsersClient:
|
|
|
795
972
|
|
|
796
973
|
Examples
|
|
797
974
|
--------
|
|
798
|
-
|
|
975
|
+
import asyncio
|
|
976
|
+
|
|
977
|
+
from label_studio_sdk import AsyncLabelStudio
|
|
799
978
|
|
|
800
979
|
client = AsyncLabelStudio(
|
|
801
980
|
api_key="YOUR_API_KEY",
|
|
802
981
|
)
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
)
|
|
982
|
+
|
|
983
|
+
|
|
984
|
+
async def main() -> None:
|
|
985
|
+
await client.users.update(
|
|
986
|
+
id=1,
|
|
987
|
+
)
|
|
988
|
+
|
|
989
|
+
|
|
990
|
+
asyncio.run(main())
|
|
806
991
|
"""
|
|
807
992
|
_response = await self._client_wrapper.httpx_client.request(
|
|
808
993
|
f"api/users/{jsonable_encoder(id)}/",
|
|
@@ -818,12 +1003,21 @@ class AsyncUsersClient:
|
|
|
818
1003
|
"phone": phone,
|
|
819
1004
|
"allow_newsletters": allow_newsletters,
|
|
820
1005
|
},
|
|
1006
|
+
headers={
|
|
1007
|
+
"content-type": "application/json",
|
|
1008
|
+
},
|
|
821
1009
|
request_options=request_options,
|
|
822
1010
|
omit=OMIT,
|
|
823
1011
|
)
|
|
824
1012
|
try:
|
|
825
1013
|
if 200 <= _response.status_code < 300:
|
|
826
|
-
return
|
|
1014
|
+
return typing.cast(
|
|
1015
|
+
BaseUser,
|
|
1016
|
+
parse_obj_as(
|
|
1017
|
+
type_=BaseUser, # type: ignore
|
|
1018
|
+
object_=_response.json(),
|
|
1019
|
+
),
|
|
1020
|
+
)
|
|
827
1021
|
_response_json = _response.json()
|
|
828
1022
|
except JSONDecodeError:
|
|
829
1023
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|