label-studio-sdk 1.0.8__py3-none-any.whl → 1.0.11__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 (218) hide show
  1. label_studio_sdk/__init__.py +37 -8
  2. label_studio_sdk/_extensions/label_studio_tools/core/utils/io.py +16 -4
  3. label_studio_sdk/_extensions/label_studio_tools/core/utils/json_schema.py +5 -0
  4. label_studio_sdk/_extensions/pager_ext.py +8 -0
  5. label_studio_sdk/actions/client.py +91 -40
  6. label_studio_sdk/actions/types/actions_create_request_filters.py +14 -24
  7. label_studio_sdk/actions/types/actions_create_request_filters_items_item.py +16 -26
  8. label_studio_sdk/actions/types/actions_create_request_filters_items_item_value.py +3 -1
  9. label_studio_sdk/actions/types/actions_create_request_selected_items.py +1 -2
  10. label_studio_sdk/actions/types/actions_create_request_selected_items_excluded.py +15 -25
  11. label_studio_sdk/actions/types/actions_create_request_selected_items_included.py +15 -25
  12. label_studio_sdk/annotations/__init__.py +2 -2
  13. label_studio_sdk/annotations/client.py +278 -104
  14. label_studio_sdk/annotations/types/__init__.py +2 -1
  15. label_studio_sdk/annotations/types/annotations_create_bulk_request_selected_items.py +34 -0
  16. label_studio_sdk/annotations/types/annotations_create_bulk_response_item.py +11 -21
  17. label_studio_sdk/base_client.py +54 -27
  18. label_studio_sdk/client.py +1 -0
  19. label_studio_sdk/comments/client.py +190 -44
  20. label_studio_sdk/converter/converter.py +56 -13
  21. label_studio_sdk/converter/imports/yolo.py +1 -1
  22. label_studio_sdk/converter/utils.py +3 -2
  23. label_studio_sdk/core/__init__.py +21 -4
  24. label_studio_sdk/core/client_wrapper.py +37 -19
  25. label_studio_sdk/core/file.py +37 -8
  26. label_studio_sdk/core/http_client.py +52 -28
  27. label_studio_sdk/core/jsonable_encoder.py +33 -31
  28. label_studio_sdk/core/pagination.py +5 -4
  29. label_studio_sdk/core/pydantic_utilities.py +272 -4
  30. label_studio_sdk/core/query_encoder.py +38 -13
  31. label_studio_sdk/core/request_options.py +3 -0
  32. label_studio_sdk/core/serialization.py +272 -0
  33. label_studio_sdk/errors/__init__.py +3 -1
  34. label_studio_sdk/errors/bad_request_error.py +2 -3
  35. label_studio_sdk/errors/not_found_error.py +9 -0
  36. label_studio_sdk/errors/unauthorized_error.py +9 -0
  37. label_studio_sdk/export_storage/azure/client.py +228 -58
  38. label_studio_sdk/export_storage/azure/types/azure_create_response.py +19 -29
  39. label_studio_sdk/export_storage/azure/types/azure_update_response.py +19 -29
  40. label_studio_sdk/export_storage/client.py +48 -18
  41. label_studio_sdk/export_storage/gcs/client.py +228 -58
  42. label_studio_sdk/export_storage/gcs/types/gcs_create_response.py +19 -29
  43. label_studio_sdk/export_storage/gcs/types/gcs_update_response.py +19 -29
  44. label_studio_sdk/export_storage/local/client.py +222 -56
  45. label_studio_sdk/export_storage/local/types/local_create_response.py +17 -27
  46. label_studio_sdk/export_storage/local/types/local_update_response.py +17 -27
  47. label_studio_sdk/export_storage/redis/client.py +228 -58
  48. label_studio_sdk/export_storage/redis/types/redis_create_response.py +20 -30
  49. label_studio_sdk/export_storage/redis/types/redis_update_response.py +20 -30
  50. label_studio_sdk/export_storage/s3/client.py +228 -58
  51. label_studio_sdk/export_storage/s3/types/s3create_response.py +27 -35
  52. label_studio_sdk/export_storage/s3/types/s3update_response.py +27 -35
  53. label_studio_sdk/export_storage/s3s/client.py +187 -43
  54. label_studio_sdk/export_storage/types/export_storage_list_types_response_item.py +11 -21
  55. label_studio_sdk/files/client.py +172 -56
  56. label_studio_sdk/import_storage/azure/client.py +223 -53
  57. label_studio_sdk/import_storage/azure/types/azure_create_response.py +22 -32
  58. label_studio_sdk/import_storage/azure/types/azure_update_response.py +22 -32
  59. label_studio_sdk/import_storage/client.py +48 -18
  60. label_studio_sdk/import_storage/gcs/client.py +223 -53
  61. label_studio_sdk/import_storage/gcs/types/gcs_create_response.py +22 -32
  62. label_studio_sdk/import_storage/gcs/types/gcs_update_response.py +22 -32
  63. label_studio_sdk/import_storage/local/client.py +223 -53
  64. label_studio_sdk/import_storage/local/types/local_create_response.py +17 -27
  65. label_studio_sdk/import_storage/local/types/local_update_response.py +17 -27
  66. label_studio_sdk/import_storage/redis/client.py +223 -53
  67. label_studio_sdk/import_storage/redis/types/redis_create_response.py +20 -30
  68. label_studio_sdk/import_storage/redis/types/redis_update_response.py +20 -30
  69. label_studio_sdk/import_storage/s3/client.py +223 -53
  70. label_studio_sdk/import_storage/s3/types/s3create_response.py +31 -39
  71. label_studio_sdk/import_storage/s3/types/s3update_response.py +31 -39
  72. label_studio_sdk/import_storage/s3s/client.py +222 -52
  73. label_studio_sdk/import_storage/types/import_storage_list_types_response_item.py +11 -21
  74. label_studio_sdk/jwt_settings/__init__.py +2 -0
  75. label_studio_sdk/jwt_settings/client.py +259 -0
  76. label_studio_sdk/label_interface/control_tags.py +16 -3
  77. label_studio_sdk/label_interface/interface.py +80 -1
  78. label_studio_sdk/label_interface/object_tags.py +2 -2
  79. label_studio_sdk/ml/client.py +280 -78
  80. label_studio_sdk/ml/types/ml_create_response.py +21 -31
  81. label_studio_sdk/ml/types/ml_update_response.py +21 -31
  82. label_studio_sdk/model_providers/client.py +173 -56
  83. label_studio_sdk/predictions/client.py +247 -101
  84. label_studio_sdk/projects/__init__.py +5 -1
  85. label_studio_sdk/projects/client.py +313 -115
  86. label_studio_sdk/projects/client_ext.py +16 -0
  87. label_studio_sdk/projects/exports/__init__.py +3 -0
  88. label_studio_sdk/projects/exports/client.py +447 -296
  89. label_studio_sdk/projects/exports/client_ext.py +200 -0
  90. label_studio_sdk/projects/exports/types/__init__.py +6 -0
  91. label_studio_sdk/projects/exports/types/exports_convert_response.py +24 -0
  92. label_studio_sdk/projects/exports/types/exports_list_formats_response_item.py +44 -0
  93. label_studio_sdk/projects/pauses/__init__.py +2 -0
  94. label_studio_sdk/projects/pauses/client.py +704 -0
  95. label_studio_sdk/projects/types/projects_create_response.py +29 -34
  96. label_studio_sdk/projects/types/projects_import_tasks_response.py +19 -29
  97. label_studio_sdk/projects/types/projects_list_response.py +11 -21
  98. label_studio_sdk/projects/types/projects_update_response.py +34 -34
  99. label_studio_sdk/prompts/client.py +309 -92
  100. label_studio_sdk/prompts/indicators/client.py +67 -23
  101. label_studio_sdk/prompts/runs/client.py +95 -40
  102. label_studio_sdk/prompts/types/prompts_batch_failed_predictions_request_failed_predictions_item.py +14 -24
  103. label_studio_sdk/prompts/types/prompts_batch_failed_predictions_response.py +11 -21
  104. label_studio_sdk/prompts/types/prompts_batch_predictions_request_results_item.py +26 -29
  105. label_studio_sdk/prompts/types/prompts_batch_predictions_response.py +11 -21
  106. label_studio_sdk/prompts/versions/client.py +277 -88
  107. label_studio_sdk/tasks/client.py +263 -90
  108. label_studio_sdk/tasks/types/tasks_list_response.py +15 -25
  109. label_studio_sdk/tokens/__init__.py +2 -0
  110. label_studio_sdk/tokens/client.py +470 -0
  111. label_studio_sdk/tokens/client_ext.py +94 -0
  112. label_studio_sdk/types/__init__.py +20 -6
  113. label_studio_sdk/types/access_token_response.py +22 -0
  114. label_studio_sdk/types/annotation.py +29 -38
  115. label_studio_sdk/types/annotation_filter_options.py +14 -24
  116. label_studio_sdk/types/annotations_dm_field.py +30 -39
  117. label_studio_sdk/types/api_token_response.py +32 -0
  118. label_studio_sdk/types/azure_blob_export_storage.py +28 -37
  119. label_studio_sdk/types/azure_blob_import_storage.py +28 -37
  120. label_studio_sdk/types/base_task.py +30 -39
  121. label_studio_sdk/types/base_task_updated_by.py +3 -1
  122. label_studio_sdk/types/base_user.py +14 -21
  123. label_studio_sdk/types/comment.py +12 -21
  124. label_studio_sdk/types/comment_created_by.py +1 -1
  125. label_studio_sdk/types/converted_format.py +12 -22
  126. label_studio_sdk/types/data_manager_task_serializer.py +31 -40
  127. label_studio_sdk/types/data_manager_task_serializer_annotators_item.py +1 -1
  128. label_studio_sdk/types/data_manager_task_serializer_drafts_item.py +13 -22
  129. label_studio_sdk/types/data_manager_task_serializer_predictions_item.py +15 -24
  130. label_studio_sdk/types/export.py +17 -26
  131. label_studio_sdk/types/export_format.py +25 -0
  132. label_studio_sdk/types/export_snapshot.py +45 -0
  133. label_studio_sdk/types/export_snapshot_status.py +5 -0
  134. label_studio_sdk/types/file_upload.py +11 -21
  135. label_studio_sdk/types/filter.py +16 -26
  136. label_studio_sdk/types/filter_group.py +12 -22
  137. label_studio_sdk/types/gcs_export_storage.py +28 -37
  138. label_studio_sdk/types/gcs_import_storage.py +28 -37
  139. label_studio_sdk/types/inference_run.py +14 -23
  140. label_studio_sdk/types/inference_run_cost_estimate.py +17 -27
  141. label_studio_sdk/types/inference_run_created_by.py +1 -1
  142. label_studio_sdk/types/inference_run_organization.py +1 -1
  143. label_studio_sdk/types/jwt_settings_response.py +32 -0
  144. label_studio_sdk/types/key_indicator_value.py +12 -22
  145. label_studio_sdk/types/key_indicators.py +0 -1
  146. label_studio_sdk/types/key_indicators_item.py +15 -25
  147. label_studio_sdk/types/key_indicators_item_additional_kpis_item.py +13 -23
  148. label_studio_sdk/types/key_indicators_item_extra_kpis_item.py +13 -23
  149. label_studio_sdk/types/local_files_export_storage.py +25 -34
  150. label_studio_sdk/types/local_files_import_storage.py +24 -33
  151. label_studio_sdk/types/ml_backend.py +23 -32
  152. label_studio_sdk/types/model_provider_connection.py +22 -31
  153. label_studio_sdk/types/model_provider_connection_created_by.py +1 -1
  154. label_studio_sdk/types/model_provider_connection_organization.py +1 -1
  155. label_studio_sdk/types/model_provider_connection_provider.py +3 -1
  156. label_studio_sdk/types/pause.py +34 -0
  157. label_studio_sdk/types/pause_paused_by.py +5 -0
  158. label_studio_sdk/types/prediction.py +21 -30
  159. label_studio_sdk/types/project.py +58 -55
  160. label_studio_sdk/types/project_import.py +21 -30
  161. label_studio_sdk/types/project_label_config.py +12 -22
  162. label_studio_sdk/types/prompt.py +24 -32
  163. label_studio_sdk/types/prompt_associated_projects_item.py +6 -0
  164. label_studio_sdk/types/prompt_associated_projects_item_id.py +20 -0
  165. label_studio_sdk/types/prompt_created_by.py +1 -1
  166. label_studio_sdk/types/prompt_organization.py +1 -1
  167. label_studio_sdk/types/prompt_version.py +13 -22
  168. label_studio_sdk/types/prompt_version_created_by.py +1 -1
  169. label_studio_sdk/types/prompt_version_organization.py +1 -1
  170. label_studio_sdk/types/prompt_version_provider.py +3 -1
  171. label_studio_sdk/types/redis_export_storage.py +29 -38
  172. label_studio_sdk/types/redis_import_storage.py +28 -37
  173. label_studio_sdk/types/refined_prompt_response.py +19 -29
  174. label_studio_sdk/types/s3export_storage.py +36 -43
  175. label_studio_sdk/types/s3import_storage.py +37 -44
  176. label_studio_sdk/types/s3s_export_storage.py +26 -33
  177. label_studio_sdk/types/s3s_import_storage.py +35 -42
  178. label_studio_sdk/types/serialization_option.py +12 -22
  179. label_studio_sdk/types/serialization_options.py +18 -28
  180. label_studio_sdk/types/task.py +44 -47
  181. label_studio_sdk/types/task_annotators_item.py +1 -1
  182. label_studio_sdk/types/task_comment_authors_item.py +1 -1
  183. label_studio_sdk/types/task_filter_options.py +15 -25
  184. label_studio_sdk/types/user_simple.py +11 -21
  185. label_studio_sdk/types/view.py +16 -26
  186. label_studio_sdk/types/webhook.py +19 -28
  187. label_studio_sdk/types/webhook_serializer_for_update.py +19 -28
  188. label_studio_sdk/types/workspace.py +22 -31
  189. label_studio_sdk/users/client.py +257 -63
  190. label_studio_sdk/users/types/users_get_token_response.py +12 -22
  191. label_studio_sdk/users/types/users_reset_token_response.py +12 -22
  192. label_studio_sdk/version.py +0 -1
  193. label_studio_sdk/versions/__init__.py +5 -0
  194. label_studio_sdk/versions/client.py +112 -0
  195. label_studio_sdk/versions/types/__init__.py +6 -0
  196. label_studio_sdk/versions/types/versions_get_response.py +73 -0
  197. label_studio_sdk/versions/types/versions_get_response_edition.py +5 -0
  198. label_studio_sdk/views/client.py +219 -52
  199. label_studio_sdk/views/types/views_create_request_data.py +13 -23
  200. label_studio_sdk/views/types/views_create_request_data_filters.py +14 -24
  201. label_studio_sdk/views/types/views_create_request_data_filters_items_item.py +16 -26
  202. label_studio_sdk/views/types/views_create_request_data_filters_items_item_value.py +3 -1
  203. label_studio_sdk/views/types/views_update_request_data.py +13 -23
  204. label_studio_sdk/views/types/views_update_request_data_filters.py +14 -24
  205. label_studio_sdk/views/types/views_update_request_data_filters_items_item.py +16 -26
  206. label_studio_sdk/views/types/views_update_request_data_filters_items_item_value.py +3 -1
  207. label_studio_sdk/webhooks/client.py +191 -61
  208. label_studio_sdk/workspaces/client.py +164 -41
  209. label_studio_sdk/workspaces/members/client.py +109 -31
  210. label_studio_sdk/workspaces/members/types/members_create_response.py +12 -22
  211. label_studio_sdk/workspaces/members/types/members_list_response_item.py +12 -22
  212. {label_studio_sdk-1.0.8.dist-info → label_studio_sdk-1.0.11.dist-info}/METADATA +8 -5
  213. {label_studio_sdk-1.0.8.dist-info → label_studio_sdk-1.0.11.dist-info}/RECORD +215 -188
  214. {label_studio_sdk-1.0.8.dist-info → label_studio_sdk-1.0.11.dist-info}/WHEEL +1 -1
  215. label_studio_sdk/types/export_convert.py +0 -32
  216. label_studio_sdk/types/export_create.py +0 -54
  217. label_studio_sdk/types/export_create_status.py +0 -5
  218. {label_studio_sdk-1.0.8.dist-info → label_studio_sdk-1.0.11.dist-info}/LICENSE +0 -0
@@ -1,15 +1,15 @@
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.members_list_response_item import MembersListResponseItem
7
+ from ...core.jsonable_encoder import jsonable_encoder
8
+ from ...core.pydantic_utilities import parse_obj_as
4
9
  from json.decoder import JSONDecodeError
5
-
6
10
  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
11
  from .types.members_create_response import MembersCreateResponse
12
- from .types.members_list_response_item import MembersListResponseItem
12
+ from ...core.client_wrapper import AsyncClientWrapper
13
13
 
14
14
  # this is used as the default value for optional parameters
15
15
  OMIT = typing.cast(typing.Any, ...)
@@ -23,6 +23,7 @@ class MembersClient:
23
23
  self, id: int, *, request_options: typing.Optional[RequestOptions] = None
24
24
  ) -> typing.List[MembersListResponseItem]:
25
25
  """
26
+
26
27
  List all workspace memberships for a specific workspace. You will need to provide the workspace ID. You can find this using [List workspaces](list).
27
28
 
28
29
  Parameters
@@ -40,7 +41,7 @@ class MembersClient:
40
41
 
41
42
  Examples
42
43
  --------
43
- from label_studio_sdk.client import LabelStudio
44
+ from label_studio_sdk import LabelStudio
44
45
 
45
46
  client = LabelStudio(
46
47
  api_key="YOUR_API_KEY",
@@ -50,11 +51,19 @@ class MembersClient:
50
51
  )
51
52
  """
52
53
  _response = self._client_wrapper.httpx_client.request(
53
- f"api/workspaces/{jsonable_encoder(id)}/memberships", method="GET", request_options=request_options
54
+ f"api/workspaces/{jsonable_encoder(id)}/memberships",
55
+ method="GET",
56
+ request_options=request_options,
54
57
  )
55
58
  try:
56
59
  if 200 <= _response.status_code < 300:
57
- return pydantic_v1.parse_obj_as(typing.List[MembersListResponseItem], _response.json()) # type: ignore
60
+ return typing.cast(
61
+ typing.List[MembersListResponseItem],
62
+ parse_obj_as(
63
+ type_=typing.List[MembersListResponseItem], # type: ignore
64
+ object_=_response.json(),
65
+ ),
66
+ )
58
67
  _response_json = _response.json()
59
68
  except JSONDecodeError:
60
69
  raise ApiError(status_code=_response.status_code, body=_response.text)
@@ -64,6 +73,7 @@ class MembersClient:
64
73
  self, id: int, *, user: typing.Optional[int] = OMIT, request_options: typing.Optional[RequestOptions] = None
65
74
  ) -> MembersCreateResponse:
66
75
  """
76
+
67
77
  Create a new workspace membership. You will need to provide the workspace ID. You can find this using [List workspaces](list).
68
78
 
69
79
  Parameters
@@ -84,7 +94,7 @@ class MembersClient:
84
94
 
85
95
  Examples
86
96
  --------
87
- from label_studio_sdk.client import LabelStudio
97
+ from label_studio_sdk import LabelStudio
88
98
 
89
99
  client = LabelStudio(
90
100
  api_key="YOUR_API_KEY",
@@ -96,13 +106,24 @@ class MembersClient:
96
106
  _response = self._client_wrapper.httpx_client.request(
97
107
  f"api/workspaces/{jsonable_encoder(id)}/memberships",
98
108
  method="POST",
99
- json={"user": user},
109
+ json={
110
+ "user": user,
111
+ },
112
+ headers={
113
+ "content-type": "application/json",
114
+ },
100
115
  request_options=request_options,
101
116
  omit=OMIT,
102
117
  )
103
118
  try:
104
119
  if 200 <= _response.status_code < 300:
105
- return pydantic_v1.parse_obj_as(MembersCreateResponse, _response.json()) # type: ignore
120
+ return typing.cast(
121
+ MembersCreateResponse,
122
+ parse_obj_as(
123
+ type_=MembersCreateResponse, # type: ignore
124
+ object_=_response.json(),
125
+ ),
126
+ )
106
127
  _response_json = _response.json()
107
128
  except JSONDecodeError:
108
129
  raise ApiError(status_code=_response.status_code, body=_response.text)
@@ -112,6 +133,7 @@ class MembersClient:
112
133
  self, id: int, *, user: typing.Optional[int] = OMIT, request_options: typing.Optional[RequestOptions] = None
113
134
  ) -> None:
114
135
  """
136
+
115
137
  Delete a specific workspace membership. You will need to provide the workspace ID and the user ID. You can find this using [List workspace memberships](list).
116
138
 
117
139
  Parameters
@@ -131,7 +153,7 @@ class MembersClient:
131
153
 
132
154
  Examples
133
155
  --------
134
- from label_studio_sdk.client import LabelStudio
156
+ from label_studio_sdk import LabelStudio
135
157
 
136
158
  client = LabelStudio(
137
159
  api_key="YOUR_API_KEY",
@@ -143,7 +165,12 @@ class MembersClient:
143
165
  _response = self._client_wrapper.httpx_client.request(
144
166
  f"api/workspaces/{jsonable_encoder(id)}/memberships",
145
167
  method="DELETE",
146
- json={"user": user},
168
+ json={
169
+ "user": user,
170
+ },
171
+ headers={
172
+ "content-type": "application/json",
173
+ },
147
174
  request_options=request_options,
148
175
  omit=OMIT,
149
176
  )
@@ -164,6 +191,7 @@ class AsyncMembersClient:
164
191
  self, id: int, *, request_options: typing.Optional[RequestOptions] = None
165
192
  ) -> typing.List[MembersListResponseItem]:
166
193
  """
194
+
167
195
  List all workspace memberships for a specific workspace. You will need to provide the workspace ID. You can find this using [List workspaces](list).
168
196
 
169
197
  Parameters
@@ -181,21 +209,37 @@ class AsyncMembersClient:
181
209
 
182
210
  Examples
183
211
  --------
184
- from label_studio_sdk.client import AsyncLabelStudio
212
+ import asyncio
213
+
214
+ from label_studio_sdk import AsyncLabelStudio
185
215
 
186
216
  client = AsyncLabelStudio(
187
217
  api_key="YOUR_API_KEY",
188
218
  )
189
- await client.workspaces.members.list(
190
- id=1,
191
- )
219
+
220
+
221
+ async def main() -> None:
222
+ await client.workspaces.members.list(
223
+ id=1,
224
+ )
225
+
226
+
227
+ asyncio.run(main())
192
228
  """
193
229
  _response = await self._client_wrapper.httpx_client.request(
194
- f"api/workspaces/{jsonable_encoder(id)}/memberships", method="GET", request_options=request_options
230
+ f"api/workspaces/{jsonable_encoder(id)}/memberships",
231
+ method="GET",
232
+ request_options=request_options,
195
233
  )
196
234
  try:
197
235
  if 200 <= _response.status_code < 300:
198
- return pydantic_v1.parse_obj_as(typing.List[MembersListResponseItem], _response.json()) # type: ignore
236
+ return typing.cast(
237
+ typing.List[MembersListResponseItem],
238
+ parse_obj_as(
239
+ type_=typing.List[MembersListResponseItem], # type: ignore
240
+ object_=_response.json(),
241
+ ),
242
+ )
199
243
  _response_json = _response.json()
200
244
  except JSONDecodeError:
201
245
  raise ApiError(status_code=_response.status_code, body=_response.text)
@@ -205,6 +249,7 @@ class AsyncMembersClient:
205
249
  self, id: int, *, user: typing.Optional[int] = OMIT, request_options: typing.Optional[RequestOptions] = None
206
250
  ) -> MembersCreateResponse:
207
251
  """
252
+
208
253
  Create a new workspace membership. You will need to provide the workspace ID. You can find this using [List workspaces](list).
209
254
 
210
255
  Parameters
@@ -225,25 +270,44 @@ class AsyncMembersClient:
225
270
 
226
271
  Examples
227
272
  --------
228
- from label_studio_sdk.client import AsyncLabelStudio
273
+ import asyncio
274
+
275
+ from label_studio_sdk import AsyncLabelStudio
229
276
 
230
277
  client = AsyncLabelStudio(
231
278
  api_key="YOUR_API_KEY",
232
279
  )
233
- await client.workspaces.members.create(
234
- id=1,
235
- )
280
+
281
+
282
+ async def main() -> None:
283
+ await client.workspaces.members.create(
284
+ id=1,
285
+ )
286
+
287
+
288
+ asyncio.run(main())
236
289
  """
237
290
  _response = await self._client_wrapper.httpx_client.request(
238
291
  f"api/workspaces/{jsonable_encoder(id)}/memberships",
239
292
  method="POST",
240
- json={"user": user},
293
+ json={
294
+ "user": user,
295
+ },
296
+ headers={
297
+ "content-type": "application/json",
298
+ },
241
299
  request_options=request_options,
242
300
  omit=OMIT,
243
301
  )
244
302
  try:
245
303
  if 200 <= _response.status_code < 300:
246
- return pydantic_v1.parse_obj_as(MembersCreateResponse, _response.json()) # type: ignore
304
+ return typing.cast(
305
+ MembersCreateResponse,
306
+ parse_obj_as(
307
+ type_=MembersCreateResponse, # type: ignore
308
+ object_=_response.json(),
309
+ ),
310
+ )
247
311
  _response_json = _response.json()
248
312
  except JSONDecodeError:
249
313
  raise ApiError(status_code=_response.status_code, body=_response.text)
@@ -253,6 +317,7 @@ class AsyncMembersClient:
253
317
  self, id: int, *, user: typing.Optional[int] = OMIT, request_options: typing.Optional[RequestOptions] = None
254
318
  ) -> None:
255
319
  """
320
+
256
321
  Delete a specific workspace membership. You will need to provide the workspace ID and the user ID. You can find this using [List workspace memberships](list).
257
322
 
258
323
  Parameters
@@ -272,19 +337,32 @@ class AsyncMembersClient:
272
337
 
273
338
  Examples
274
339
  --------
275
- from label_studio_sdk.client import AsyncLabelStudio
340
+ import asyncio
341
+
342
+ from label_studio_sdk import AsyncLabelStudio
276
343
 
277
344
  client = AsyncLabelStudio(
278
345
  api_key="YOUR_API_KEY",
279
346
  )
280
- await client.workspaces.members.delete(
281
- id=1,
282
- )
347
+
348
+
349
+ async def main() -> None:
350
+ await client.workspaces.members.delete(
351
+ id=1,
352
+ )
353
+
354
+
355
+ asyncio.run(main())
283
356
  """
284
357
  _response = await self._client_wrapper.httpx_client.request(
285
358
  f"api/workspaces/{jsonable_encoder(id)}/memberships",
286
359
  method="DELETE",
287
- json={"user": user},
360
+ json={
361
+ "user": user,
362
+ },
363
+ headers={
364
+ "content-type": "application/json",
365
+ },
288
366
  request_options=request_options,
289
367
  omit=OMIT,
290
368
  )
@@ -1,32 +1,22 @@
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
+ import pydantic
6
+ from ....core.pydantic_utilities import IS_PYDANTIC_V2
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 MembersCreateResponse(pydantic_v1.BaseModel):
11
- user: typing.Optional[int] = pydantic_v1.Field(default=None)
9
+ class MembersCreateResponse(UniversalBaseModel):
10
+ user: typing.Optional[int] = pydantic.Field(default=None)
12
11
  """
13
12
  User ID of the workspace member
14
13
  """
15
14
 
16
- def json(self, **kwargs: typing.Any) -> str:
17
- kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
18
- return super().json(**kwargs_with_defaults)
19
-
20
- def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
21
- kwargs_with_defaults_exclude_unset: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
22
- kwargs_with_defaults_exclude_none: typing.Any = {"by_alias": True, "exclude_none": True, **kwargs}
23
-
24
- return deep_union_pydantic_dicts(
25
- super().dict(**kwargs_with_defaults_exclude_unset), super().dict(**kwargs_with_defaults_exclude_none)
26
- )
15
+ if IS_PYDANTIC_V2:
16
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
17
+ else:
27
18
 
28
- class Config:
29
- frozen = True
30
- smart_union = True
31
- extra = pydantic_v1.Extra.allow
32
- json_encoders = {dt.datetime: serialize_datetime}
19
+ class Config:
20
+ frozen = True
21
+ smart_union = True
22
+ extra = pydantic.Extra.allow
@@ -1,32 +1,22 @@
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
+ import pydantic
6
+ from ....core.pydantic_utilities import IS_PYDANTIC_V2
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 MembersListResponseItem(pydantic_v1.BaseModel):
11
- user: typing.Optional[typing.Dict[str, typing.Any]] = pydantic_v1.Field(default=None)
9
+ class MembersListResponseItem(UniversalBaseModel):
10
+ user: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(default=None)
12
11
  """
13
12
  User ID of the workspace member
14
13
  """
15
14
 
16
- def json(self, **kwargs: typing.Any) -> str:
17
- kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
18
- return super().json(**kwargs_with_defaults)
19
-
20
- def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
21
- kwargs_with_defaults_exclude_unset: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
22
- kwargs_with_defaults_exclude_none: typing.Any = {"by_alias": True, "exclude_none": True, **kwargs}
23
-
24
- return deep_union_pydantic_dicts(
25
- super().dict(**kwargs_with_defaults_exclude_unset), super().dict(**kwargs_with_defaults_exclude_none)
26
- )
15
+ if IS_PYDANTIC_V2:
16
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
17
+ else:
27
18
 
28
- class Config:
29
- frozen = True
30
- smart_union = True
31
- extra = pydantic_v1.Extra.allow
32
- json_encoders = {dt.datetime: serialize_datetime}
19
+ class Config:
20
+ frozen = True
21
+ smart_union = True
22
+ extra = pydantic.Extra.allow
@@ -1,8 +1,8 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: label-studio-sdk
3
- Version: 1.0.8
3
+ Version: 1.0.11
4
4
  Summary:
5
- Requires-Python: >=3.8,<4.0
5
+ Requires-Python: >=3.9,<4
6
6
  Classifier: Intended Audience :: Developers
7
7
  Classifier: Operating System :: MacOS
8
8
  Classifier: Operating System :: Microsoft :: Windows
@@ -11,12 +11,12 @@ Classifier: Operating System :: POSIX
11
11
  Classifier: Operating System :: POSIX :: Linux
12
12
  Classifier: Programming Language :: Python
13
13
  Classifier: Programming Language :: Python :: 3
14
- Classifier: Programming Language :: Python :: 3.8
15
14
  Classifier: Programming Language :: Python :: 3.9
16
15
  Classifier: Programming Language :: Python :: 3.10
17
16
  Classifier: Programming Language :: Python :: 3.11
18
17
  Classifier: Programming Language :: Python :: 3.12
19
18
  Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Programming Language :: Python :: 3.8
20
20
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
21
21
  Classifier: Typing :: Typed
22
22
  Requires-Dist: Pillow (>=10.0.1)
@@ -28,14 +28,17 @@ Requires-Dist: jsf (>=0.11.2,<0.12.0)
28
28
  Requires-Dist: jsonschema (>=4.23.0)
29
29
  Requires-Dist: lxml (>=4.2.5)
30
30
  Requires-Dist: nltk (>=3.9.1,<4.0.0)
31
- Requires-Dist: numpy (<2.0.0)
31
+ Requires-Dist: numpy (>=1.26.4,<2.0.0)
32
32
  Requires-Dist: pandas (>=0.24.0)
33
33
  Requires-Dist: pydantic (>=1.9.2)
34
+ Requires-Dist: pydantic-core (>=2.18.2,<3.0.0)
35
+ Requires-Dist: pyjwt (>=2.10.1,<3.0.0)
34
36
  Requires-Dist: requests (>=2.22.0)
35
37
  Requires-Dist: requests-mock (==1.12.1)
36
38
  Requires-Dist: typing_extensions (>=4.0.0)
37
39
  Requires-Dist: ujson (>=5.8.0)
38
40
  Requires-Dist: xmljson (==0.2.1)
41
+ Project-URL: Repository, https://github.com/HumanSignal/label-studio-sdk
39
42
  Description-Content-Type: text/markdown
40
43
 
41
44
  # Label Studio Python Library