label-studio-sdk 1.0.7__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.

Files changed (206) hide show
  1. label_studio_sdk/__init__.py +26 -7
  2. label_studio_sdk/_extensions/label_studio_tools/core/label_config.py +13 -4
  3. label_studio_sdk/_extensions/label_studio_tools/core/utils/io.py +16 -4
  4. label_studio_sdk/_extensions/label_studio_tools/core/utils/json_schema.py +86 -0
  5. label_studio_sdk/_extensions/pager_ext.py +8 -0
  6. label_studio_sdk/_legacy/schema/label_config_schema.json +42 -11
  7. label_studio_sdk/actions/client.py +91 -40
  8. label_studio_sdk/actions/types/actions_create_request_filters.py +14 -24
  9. label_studio_sdk/actions/types/actions_create_request_filters_items_item.py +16 -26
  10. label_studio_sdk/actions/types/actions_create_request_filters_items_item_value.py +3 -1
  11. label_studio_sdk/actions/types/actions_create_request_selected_items.py +1 -2
  12. label_studio_sdk/actions/types/actions_create_request_selected_items_excluded.py +15 -25
  13. label_studio_sdk/actions/types/actions_create_request_selected_items_included.py +15 -25
  14. label_studio_sdk/annotations/__init__.py +2 -2
  15. label_studio_sdk/annotations/client.py +278 -104
  16. label_studio_sdk/annotations/types/__init__.py +2 -1
  17. label_studio_sdk/annotations/types/annotations_create_bulk_request_selected_items.py +34 -0
  18. label_studio_sdk/annotations/types/annotations_create_bulk_response_item.py +11 -21
  19. label_studio_sdk/base_client.py +46 -27
  20. label_studio_sdk/client.py +1 -0
  21. label_studio_sdk/comments/client.py +190 -44
  22. label_studio_sdk/converter/converter.py +66 -18
  23. label_studio_sdk/converter/imports/yolo.py +1 -1
  24. label_studio_sdk/converter/utils.py +3 -2
  25. label_studio_sdk/core/__init__.py +21 -4
  26. label_studio_sdk/core/client_wrapper.py +9 -10
  27. label_studio_sdk/core/file.py +37 -8
  28. label_studio_sdk/core/http_client.py +52 -28
  29. label_studio_sdk/core/jsonable_encoder.py +33 -31
  30. label_studio_sdk/core/pagination.py +5 -4
  31. label_studio_sdk/core/pydantic_utilities.py +272 -4
  32. label_studio_sdk/core/query_encoder.py +38 -13
  33. label_studio_sdk/core/request_options.py +3 -0
  34. label_studio_sdk/core/serialization.py +272 -0
  35. label_studio_sdk/errors/bad_request_error.py +2 -3
  36. label_studio_sdk/export_storage/azure/client.py +228 -58
  37. label_studio_sdk/export_storage/azure/types/azure_create_response.py +19 -29
  38. label_studio_sdk/export_storage/azure/types/azure_update_response.py +19 -29
  39. label_studio_sdk/export_storage/client.py +48 -18
  40. label_studio_sdk/export_storage/gcs/client.py +228 -58
  41. label_studio_sdk/export_storage/gcs/types/gcs_create_response.py +19 -29
  42. label_studio_sdk/export_storage/gcs/types/gcs_update_response.py +19 -29
  43. label_studio_sdk/export_storage/local/client.py +222 -56
  44. label_studio_sdk/export_storage/local/types/local_create_response.py +17 -27
  45. label_studio_sdk/export_storage/local/types/local_update_response.py +17 -27
  46. label_studio_sdk/export_storage/redis/client.py +228 -58
  47. label_studio_sdk/export_storage/redis/types/redis_create_response.py +20 -30
  48. label_studio_sdk/export_storage/redis/types/redis_update_response.py +20 -30
  49. label_studio_sdk/export_storage/s3/client.py +228 -58
  50. label_studio_sdk/export_storage/s3/types/s3create_response.py +27 -35
  51. label_studio_sdk/export_storage/s3/types/s3update_response.py +27 -35
  52. label_studio_sdk/export_storage/s3s/client.py +187 -43
  53. label_studio_sdk/export_storage/types/export_storage_list_types_response_item.py +11 -21
  54. label_studio_sdk/files/client.py +172 -56
  55. label_studio_sdk/import_storage/azure/client.py +223 -53
  56. label_studio_sdk/import_storage/azure/types/azure_create_response.py +22 -32
  57. label_studio_sdk/import_storage/azure/types/azure_update_response.py +22 -32
  58. label_studio_sdk/import_storage/client.py +48 -18
  59. label_studio_sdk/import_storage/gcs/client.py +223 -53
  60. label_studio_sdk/import_storage/gcs/types/gcs_create_response.py +22 -32
  61. label_studio_sdk/import_storage/gcs/types/gcs_update_response.py +22 -32
  62. label_studio_sdk/import_storage/local/client.py +223 -53
  63. label_studio_sdk/import_storage/local/types/local_create_response.py +17 -27
  64. label_studio_sdk/import_storage/local/types/local_update_response.py +17 -27
  65. label_studio_sdk/import_storage/redis/client.py +223 -53
  66. label_studio_sdk/import_storage/redis/types/redis_create_response.py +20 -30
  67. label_studio_sdk/import_storage/redis/types/redis_update_response.py +20 -30
  68. label_studio_sdk/import_storage/s3/client.py +223 -53
  69. label_studio_sdk/import_storage/s3/types/s3create_response.py +31 -39
  70. label_studio_sdk/import_storage/s3/types/s3update_response.py +31 -39
  71. label_studio_sdk/import_storage/s3s/client.py +222 -52
  72. label_studio_sdk/import_storage/types/import_storage_list_types_response_item.py +11 -21
  73. label_studio_sdk/label_interface/control_tags.py +205 -10
  74. label_studio_sdk/label_interface/interface.py +80 -6
  75. label_studio_sdk/label_interface/region.py +1 -10
  76. label_studio_sdk/ml/client.py +280 -78
  77. label_studio_sdk/ml/types/ml_create_response.py +21 -31
  78. label_studio_sdk/ml/types/ml_update_response.py +21 -31
  79. label_studio_sdk/model_providers/client.py +656 -21
  80. label_studio_sdk/predictions/client.py +247 -101
  81. label_studio_sdk/projects/__init__.py +3 -0
  82. label_studio_sdk/projects/client.py +309 -115
  83. label_studio_sdk/projects/client_ext.py +16 -0
  84. label_studio_sdk/projects/exports/__init__.py +3 -0
  85. label_studio_sdk/projects/exports/client.py +447 -296
  86. label_studio_sdk/projects/exports/client_ext.py +134 -0
  87. label_studio_sdk/projects/exports/types/__init__.py +6 -0
  88. label_studio_sdk/projects/exports/types/exports_convert_response.py +24 -0
  89. label_studio_sdk/projects/exports/types/exports_list_formats_response_item.py +44 -0
  90. label_studio_sdk/projects/types/projects_create_response.py +29 -34
  91. label_studio_sdk/projects/types/projects_import_tasks_response.py +19 -29
  92. label_studio_sdk/projects/types/projects_list_response.py +11 -21
  93. label_studio_sdk/projects/types/projects_update_response.py +24 -34
  94. label_studio_sdk/prompts/client.py +309 -92
  95. label_studio_sdk/prompts/indicators/client.py +67 -23
  96. label_studio_sdk/prompts/runs/client.py +95 -40
  97. label_studio_sdk/prompts/types/prompts_batch_failed_predictions_request_failed_predictions_item.py +14 -24
  98. label_studio_sdk/prompts/types/prompts_batch_failed_predictions_response.py +11 -21
  99. label_studio_sdk/prompts/types/prompts_batch_predictions_request_results_item.py +26 -29
  100. label_studio_sdk/prompts/types/prompts_batch_predictions_response.py +11 -21
  101. label_studio_sdk/prompts/versions/client.py +389 -75
  102. label_studio_sdk/tasks/client.py +263 -90
  103. label_studio_sdk/tasks/types/tasks_list_response.py +15 -25
  104. label_studio_sdk/types/__init__.py +16 -6
  105. label_studio_sdk/types/annotation.py +29 -38
  106. label_studio_sdk/types/annotation_filter_options.py +14 -24
  107. label_studio_sdk/types/annotations_dm_field.py +30 -39
  108. label_studio_sdk/types/azure_blob_export_storage.py +28 -37
  109. label_studio_sdk/types/azure_blob_import_storage.py +28 -37
  110. label_studio_sdk/types/base_task.py +30 -39
  111. label_studio_sdk/types/base_task_updated_by.py +3 -1
  112. label_studio_sdk/types/base_user.py +14 -21
  113. label_studio_sdk/types/comment.py +12 -21
  114. label_studio_sdk/types/comment_created_by.py +1 -1
  115. label_studio_sdk/types/converted_format.py +12 -22
  116. label_studio_sdk/types/data_manager_task_serializer.py +31 -40
  117. label_studio_sdk/types/data_manager_task_serializer_annotators_item.py +1 -1
  118. label_studio_sdk/types/data_manager_task_serializer_drafts_item.py +13 -22
  119. label_studio_sdk/types/data_manager_task_serializer_predictions_item.py +15 -24
  120. label_studio_sdk/types/export.py +17 -26
  121. label_studio_sdk/types/export_format.py +25 -0
  122. label_studio_sdk/types/export_snapshot.py +45 -0
  123. label_studio_sdk/types/export_snapshot_status.py +5 -0
  124. label_studio_sdk/types/file_upload.py +11 -21
  125. label_studio_sdk/types/filter.py +16 -26
  126. label_studio_sdk/types/filter_group.py +12 -22
  127. label_studio_sdk/types/gcs_export_storage.py +28 -37
  128. label_studio_sdk/types/gcs_import_storage.py +28 -37
  129. label_studio_sdk/types/inference_run.py +14 -23
  130. label_studio_sdk/types/inference_run_cost_estimate.py +47 -0
  131. label_studio_sdk/types/inference_run_created_by.py +1 -1
  132. label_studio_sdk/types/inference_run_organization.py +1 -1
  133. label_studio_sdk/types/key_indicator_value.py +12 -22
  134. label_studio_sdk/types/key_indicators.py +0 -1
  135. label_studio_sdk/types/key_indicators_item.py +15 -25
  136. label_studio_sdk/types/key_indicators_item_additional_kpis_item.py +13 -23
  137. label_studio_sdk/types/key_indicators_item_extra_kpis_item.py +13 -23
  138. label_studio_sdk/types/local_files_export_storage.py +25 -34
  139. label_studio_sdk/types/local_files_import_storage.py +24 -33
  140. label_studio_sdk/types/ml_backend.py +23 -32
  141. label_studio_sdk/types/model_provider_connection.py +47 -26
  142. label_studio_sdk/types/model_provider_connection_budget_reset_period.py +5 -0
  143. label_studio_sdk/types/model_provider_connection_created_by.py +1 -1
  144. label_studio_sdk/types/model_provider_connection_organization.py +1 -1
  145. label_studio_sdk/types/model_provider_connection_provider.py +3 -1
  146. label_studio_sdk/types/prediction.py +21 -30
  147. label_studio_sdk/types/project.py +48 -55
  148. label_studio_sdk/types/project_import.py +21 -30
  149. label_studio_sdk/types/project_label_config.py +12 -22
  150. label_studio_sdk/types/prompt.py +24 -32
  151. label_studio_sdk/types/prompt_associated_projects_item.py +6 -0
  152. label_studio_sdk/types/prompt_associated_projects_item_id.py +20 -0
  153. label_studio_sdk/types/prompt_created_by.py +1 -1
  154. label_studio_sdk/types/prompt_organization.py +1 -1
  155. label_studio_sdk/types/prompt_version.py +13 -22
  156. label_studio_sdk/types/prompt_version_created_by.py +1 -1
  157. label_studio_sdk/types/prompt_version_organization.py +1 -1
  158. label_studio_sdk/types/prompt_version_provider.py +3 -1
  159. label_studio_sdk/types/redis_export_storage.py +29 -38
  160. label_studio_sdk/types/redis_import_storage.py +28 -37
  161. label_studio_sdk/types/refined_prompt_response.py +19 -29
  162. label_studio_sdk/types/s3export_storage.py +36 -43
  163. label_studio_sdk/types/s3import_storage.py +37 -44
  164. label_studio_sdk/types/s3s_export_storage.py +26 -33
  165. label_studio_sdk/types/s3s_import_storage.py +35 -42
  166. label_studio_sdk/types/serialization_option.py +12 -22
  167. label_studio_sdk/types/serialization_options.py +18 -28
  168. label_studio_sdk/types/task.py +46 -48
  169. label_studio_sdk/types/task_annotators_item.py +1 -1
  170. label_studio_sdk/types/task_comment_authors_item.py +5 -0
  171. label_studio_sdk/types/task_filter_options.py +15 -25
  172. label_studio_sdk/types/user_simple.py +11 -21
  173. label_studio_sdk/types/view.py +16 -26
  174. label_studio_sdk/types/webhook.py +19 -28
  175. label_studio_sdk/types/webhook_serializer_for_update.py +19 -28
  176. label_studio_sdk/types/workspace.py +22 -31
  177. label_studio_sdk/users/client.py +257 -63
  178. label_studio_sdk/users/types/users_get_token_response.py +12 -22
  179. label_studio_sdk/users/types/users_reset_token_response.py +12 -22
  180. label_studio_sdk/version.py +0 -1
  181. label_studio_sdk/versions/__init__.py +5 -0
  182. label_studio_sdk/versions/client.py +112 -0
  183. label_studio_sdk/versions/types/__init__.py +6 -0
  184. label_studio_sdk/versions/types/versions_get_response.py +73 -0
  185. label_studio_sdk/versions/types/versions_get_response_edition.py +5 -0
  186. label_studio_sdk/views/client.py +219 -52
  187. label_studio_sdk/views/types/views_create_request_data.py +13 -23
  188. label_studio_sdk/views/types/views_create_request_data_filters.py +14 -24
  189. label_studio_sdk/views/types/views_create_request_data_filters_items_item.py +16 -26
  190. label_studio_sdk/views/types/views_create_request_data_filters_items_item_value.py +3 -1
  191. label_studio_sdk/views/types/views_update_request_data.py +13 -23
  192. label_studio_sdk/views/types/views_update_request_data_filters.py +14 -24
  193. label_studio_sdk/views/types/views_update_request_data_filters_items_item.py +16 -26
  194. label_studio_sdk/views/types/views_update_request_data_filters_items_item_value.py +3 -1
  195. label_studio_sdk/webhooks/client.py +191 -61
  196. label_studio_sdk/workspaces/client.py +164 -41
  197. label_studio_sdk/workspaces/members/client.py +109 -31
  198. label_studio_sdk/workspaces/members/types/members_create_response.py +12 -22
  199. label_studio_sdk/workspaces/members/types/members_list_response_item.py +12 -22
  200. {label_studio_sdk-1.0.7.dist-info → label_studio_sdk-1.0.10.dist-info}/METADATA +9 -5
  201. {label_studio_sdk-1.0.7.dist-info → label_studio_sdk-1.0.10.dist-info}/RECORD +203 -186
  202. {label_studio_sdk-1.0.7.dist-info → label_studio_sdk-1.0.10.dist-info}/WHEEL +1 -1
  203. label_studio_sdk/types/export_convert.py +0 -32
  204. label_studio_sdk/types/export_create.py +0 -54
  205. label_studio_sdk/types/export_create_status.py +0 -5
  206. {label_studio_sdk-1.0.7.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.pydantic_utilities import pydantic_v1
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.client import LabelStudio
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", method="GET", params={"project": project}, request_options=request_options
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 pydantic_v1.parse_obj_as(typing.List[S3SExportStorage], _response.json()) # type: ignore
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.client import LabelStudio
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 pydantic_v1.parse_obj_as(S3SExportStorage, _response.json()) # type: ignore
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.client import LabelStudio
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)}", method="GET", request_options=request_options
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 pydantic_v1.parse_obj_as(S3SExportStorage, _response.json()) # type: ignore
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.client import LabelStudio
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)}", method="DELETE", request_options=request_options
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.client import LabelStudio
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 pydantic_v1.parse_obj_as(S3SExportStorage, _response.json()) # type: ignore
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.client import LabelStudio
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
- from label_studio_sdk.client import AsyncLabelStudio
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
- await client.export_storage.s3s.list()
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", method="GET", params={"project": project}, request_options=request_options
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 pydantic_v1.parse_obj_as(typing.List[S3SExportStorage], _response.json()) # type: ignore
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
- from label_studio_sdk.client import AsyncLabelStudio
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
- await client.export_storage.s3s.create()
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 pydantic_v1.parse_obj_as(S3SExportStorage, _response.json()) # type: ignore
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
- from label_studio_sdk.client import AsyncLabelStudio
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
- await client.export_storage.s3s.get(
595
- id=1,
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)}", method="GET", request_options=request_options
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 pydantic_v1.parse_obj_as(S3SExportStorage, _response.json()) # type: ignore
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
- from label_studio_sdk.client import AsyncLabelStudio
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
- await client.export_storage.s3s.delete(
633
- id=1,
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)}", method="DELETE", request_options=request_options
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
- from label_studio_sdk.client import AsyncLabelStudio
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
- await client.export_storage.s3s.update(
717
- id=1,
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 pydantic_v1.parse_obj_as(S3SExportStorage, _response.json()) # type: ignore
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
- from label_studio_sdk.client import AsyncLabelStudio
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
- await client.export_storage.s3s.validate()
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
- import datetime as dt
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
- def json(self, **kwargs: typing.Any) -> str:
15
- kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
16
- return super().json(**kwargs_with_defaults)
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
- class Config:
27
- frozen = True
28
- smart_union = True
29
- extra = pydantic_v1.Extra.allow
30
- json_encoders = {dt.datetime: serialize_datetime}
17
+ class Config:
18
+ frozen = True
19
+ smart_union = True
20
+ extra = pydantic.Extra.allow