label-studio-sdk 1.0.20__py3-none-any.whl → 2.0.1__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 (421) hide show
  1. label_studio_sdk/__init__.py +345 -180
  2. label_studio_sdk/actions/__init__.py +4 -0
  3. label_studio_sdk/actions/client.py +46 -10
  4. label_studio_sdk/actions/types/__init__.py +4 -0
  5. label_studio_sdk/actions/types/actions_create_request_filters.py +2 -2
  6. label_studio_sdk/actions/types/actions_create_request_filters_items_item.py +2 -2
  7. label_studio_sdk/actions/types/actions_create_request_id.py +7 -7
  8. label_studio_sdk/actions/types/actions_create_request_selected_items_excluded.py +2 -2
  9. label_studio_sdk/actions/types/actions_create_request_selected_items_included.py +2 -2
  10. label_studio_sdk/actions/types/actions_list_response_item.py +25 -0
  11. label_studio_sdk/actions/types/actions_list_response_item_dialog.py +22 -0
  12. label_studio_sdk/annotations/__init__.py +2 -2
  13. label_studio_sdk/annotations/client.py +379 -243
  14. label_studio_sdk/annotations/types/__init__.py +4 -2
  15. label_studio_sdk/annotations/types/annotation_bulk_serializer_with_selected_items_request_last_action.py +7 -0
  16. label_studio_sdk/annotations/types/annotations_create_bulk_response_item.py +8 -5
  17. label_studio_sdk/base_client.py +32 -24
  18. label_studio_sdk/billing/__init__.py +2 -0
  19. label_studio_sdk/billing/client.py +112 -0
  20. label_studio_sdk/comments/client.py +378 -140
  21. label_studio_sdk/converter/README.md +207 -0
  22. label_studio_sdk/converter/imports/coco.py +132 -23
  23. label_studio_sdk/core/__init__.py +4 -0
  24. label_studio_sdk/core/unchecked_base_model.py +305 -0
  25. label_studio_sdk/environment.py +1 -1
  26. label_studio_sdk/errors/__init__.py +10 -1
  27. label_studio_sdk/errors/forbidden_error.py +9 -0
  28. label_studio_sdk/errors/method_not_allowed_error.py +9 -0
  29. label_studio_sdk/export_storage/__init__.py +1 -24
  30. label_studio_sdk/export_storage/azure/__init__.py +0 -3
  31. label_studio_sdk/export_storage/azure/client.py +231 -273
  32. label_studio_sdk/export_storage/client.py +5 -5
  33. label_studio_sdk/export_storage/gcs/__init__.py +0 -3
  34. label_studio_sdk/export_storage/gcs/client.py +231 -273
  35. label_studio_sdk/export_storage/local/__init__.py +0 -3
  36. label_studio_sdk/export_storage/local/client.py +211 -253
  37. label_studio_sdk/export_storage/redis/__init__.py +0 -3
  38. label_studio_sdk/export_storage/redis/client.py +239 -281
  39. label_studio_sdk/export_storage/s3/__init__.py +0 -3
  40. label_studio_sdk/export_storage/s3/client.py +254 -296
  41. label_studio_sdk/export_storage/s3s/client.py +694 -210
  42. label_studio_sdk/export_storage/types/export_storage_list_types_response_item.py +2 -2
  43. label_studio_sdk/files/client.py +52 -71
  44. label_studio_sdk/import_storage/__init__.py +1 -24
  45. label_studio_sdk/import_storage/azure/__init__.py +0 -3
  46. label_studio_sdk/import_storage/azure/client.py +249 -299
  47. label_studio_sdk/import_storage/client.py +5 -5
  48. label_studio_sdk/import_storage/gcs/__init__.py +0 -3
  49. label_studio_sdk/import_storage/gcs/client.py +249 -299
  50. label_studio_sdk/import_storage/local/__init__.py +0 -3
  51. label_studio_sdk/import_storage/local/client.py +211 -257
  52. label_studio_sdk/import_storage/redis/__init__.py +0 -3
  53. label_studio_sdk/import_storage/redis/client.py +239 -285
  54. label_studio_sdk/import_storage/s3/__init__.py +0 -3
  55. label_studio_sdk/import_storage/s3/client.py +274 -324
  56. label_studio_sdk/import_storage/s3s/client.py +728 -434
  57. label_studio_sdk/import_storage/types/import_storage_list_types_response_item.py +2 -2
  58. label_studio_sdk/jwt_settings/client.py +56 -58
  59. label_studio_sdk/label_interface/control_tags.py +48 -8
  60. label_studio_sdk/label_interface/interface.py +261 -56
  61. label_studio_sdk/ml/__init__.py +2 -16
  62. label_studio_sdk/ml/client.py +196 -179
  63. label_studio_sdk/ml/types/__init__.py +2 -12
  64. label_studio_sdk/ml/types/ml_list_model_versions_response.py +20 -0
  65. label_studio_sdk/model_providers/__init__.py +3 -0
  66. label_studio_sdk/model_providers/client.py +280 -228
  67. label_studio_sdk/model_providers/types/__init__.py +5 -0
  68. label_studio_sdk/{prompts/types/prompts_batch_predictions_response.py → model_providers/types/model_providers_list_model_provider_choices_response.py} +3 -3
  69. label_studio_sdk/organizations/__init__.py +5 -0
  70. label_studio_sdk/organizations/client.py +331 -0
  71. label_studio_sdk/organizations/members/__init__.py +2 -0
  72. label_studio_sdk/organizations/members/client.py +636 -0
  73. label_studio_sdk/predictions/client.py +29 -77
  74. label_studio_sdk/projects/__init__.py +18 -9
  75. label_studio_sdk/projects/client.py +905 -414
  76. label_studio_sdk/projects/exports/__init__.py +2 -2
  77. label_studio_sdk/projects/exports/client.py +336 -396
  78. label_studio_sdk/projects/exports/client_ext.py +30 -30
  79. label_studio_sdk/projects/exports/types/__init__.py +1 -2
  80. label_studio_sdk/projects/exports/types/exports_convert_response.py +5 -9
  81. label_studio_sdk/projects/pauses/client.py +114 -105
  82. label_studio_sdk/projects/stats/__init__.py +5 -0
  83. label_studio_sdk/projects/stats/client.py +175 -0
  84. label_studio_sdk/projects/stats/types/__init__.py +8 -0
  85. label_studio_sdk/projects/stats/types/stats_iaa_response.py +44 -0
  86. label_studio_sdk/projects/stats/types/stats_iaa_response_common_tasks.py +7 -0
  87. label_studio_sdk/projects/stats/types/stats_iaa_response_iaa.py +5 -0
  88. label_studio_sdk/{types/base_task_file_upload.py → projects/stats/types/stats_iaa_response_std.py} +1 -1
  89. label_studio_sdk/projects/types/__init__.py +10 -6
  90. label_studio_sdk/projects/types/lse_project_create_request_sampling.py +7 -0
  91. label_studio_sdk/projects/types/lse_project_create_request_skip_queue.py +7 -0
  92. label_studio_sdk/projects/types/patched_lse_project_update_request_sampling.py +7 -0
  93. label_studio_sdk/projects/types/patched_lse_project_update_request_skip_queue.py +7 -0
  94. label_studio_sdk/{prompts/types/prompts_batch_failed_predictions_response.py → projects/types/projects_duplicate_response.py} +8 -5
  95. label_studio_sdk/projects/types/projects_import_tasks_response.py +2 -2
  96. label_studio_sdk/projects/types/projects_list_request_filter.py +1 -1
  97. label_studio_sdk/prompts/__init__.py +4 -10
  98. label_studio_sdk/prompts/client.py +511 -442
  99. label_studio_sdk/prompts/indicators/__init__.py +3 -0
  100. label_studio_sdk/prompts/indicators/client.py +47 -49
  101. label_studio_sdk/prompts/indicators/types/__init__.py +5 -0
  102. label_studio_sdk/{types/key_indicator_value.py → prompts/indicators/types/indicators_list_response_item.py} +3 -3
  103. label_studio_sdk/prompts/runs/client.py +113 -135
  104. label_studio_sdk/prompts/types/__init__.py +2 -12
  105. label_studio_sdk/prompts/types/prompts_compatible_projects_request_project_type.py +7 -0
  106. label_studio_sdk/prompts/versions/client.py +372 -312
  107. label_studio_sdk/tasks/__init__.py +2 -2
  108. label_studio_sdk/tasks/client.py +514 -213
  109. label_studio_sdk/tasks/types/__init__.py +1 -2
  110. label_studio_sdk/tokens/client.py +160 -152
  111. label_studio_sdk/tokens/client_ext.py +3 -3
  112. label_studio_sdk/types/__init__.py +276 -142
  113. label_studio_sdk/{webhooks/types/webhooks_update_request_actions_item.py → types/actions_enum.py} +4 -1
  114. label_studio_sdk/types/all_roles_project_list.py +197 -0
  115. label_studio_sdk/types/all_roles_project_list_sampling.py +7 -0
  116. label_studio_sdk/types/all_roles_project_list_skip_queue.py +7 -0
  117. label_studio_sdk/types/annotated_enum.py +5 -0
  118. label_studio_sdk/types/annotation.py +24 -10
  119. label_studio_sdk/types/annotation_last_action.py +3 -15
  120. label_studio_sdk/types/{annotations_dm_field.py → annotation_request.py} +21 -30
  121. label_studio_sdk/types/annotation_request_last_action.py +7 -0
  122. label_studio_sdk/types/assignment_settings.py +31 -0
  123. label_studio_sdk/types/assignment_settings_label_stream_task_distribution.py +7 -0
  124. label_studio_sdk/types/assignment_settings_request.py +32 -0
  125. label_studio_sdk/types/assignment_settings_request_label_stream_task_distribution.py +7 -0
  126. label_studio_sdk/types/associated_project.py +30 -0
  127. label_studio_sdk/types/auth_method_enum.py +5 -0
  128. label_studio_sdk/types/azure_blob_export_storage.py +8 -12
  129. label_studio_sdk/types/azure_blob_import_storage.py +8 -12
  130. label_studio_sdk/types/{prompt_associated_projects_item_id.py → batch_failed_predictions.py} +4 -4
  131. label_studio_sdk/types/{access_token_response.py → batch_predictions.py} +6 -8
  132. label_studio_sdk/types/billing_checks.py +39 -0
  133. label_studio_sdk/types/billing_flags.py +44 -0
  134. label_studio_sdk/types/billing_info_response.py +22 -0
  135. label_studio_sdk/types/blank_enum.py +5 -0
  136. label_studio_sdk/types/{key_indicators_item_extra_kpis_item.py → blueprint_list.py} +12 -6
  137. label_studio_sdk/types/budget_reset_period_enum.py +5 -0
  138. label_studio_sdk/types/child_filter.py +44 -0
  139. label_studio_sdk/types/comment.py +39 -14
  140. label_studio_sdk/types/comment_request.py +32 -0
  141. label_studio_sdk/types/comment_serializer_with_expanded_user.py +53 -0
  142. label_studio_sdk/types/converted_format.py +5 -5
  143. label_studio_sdk/types/{api_token_response.py → converted_format_request.py} +8 -15
  144. label_studio_sdk/types/count_limit.py +22 -0
  145. label_studio_sdk/types/custom_scripts_editable_by_enum.py +5 -0
  146. label_studio_sdk/types/default_role_enum.py +5 -0
  147. label_studio_sdk/types/edition_enum.py +5 -0
  148. label_studio_sdk/types/export.py +7 -7
  149. label_studio_sdk/types/file_upload.py +5 -5
  150. label_studio_sdk/types/filter.py +9 -6
  151. label_studio_sdk/types/filter_group.py +3 -3
  152. label_studio_sdk/types/finished_enum.py +5 -0
  153. label_studio_sdk/types/gcs_export_storage.py +8 -12
  154. label_studio_sdk/types/gcs_import_storage.py +8 -12
  155. label_studio_sdk/types/{rotate_token_response.py → hotkeys.py} +5 -8
  156. label_studio_sdk/types/{base_task.py → import_api_request.py} +11 -34
  157. label_studio_sdk/types/inference_run_cost_estimate.py +2 -2
  158. label_studio_sdk/types/label_stream_task_distribution_enum.py +5 -0
  159. label_studio_sdk/types/{annotations_dm_field_last_action.py → last_action_enum.py} +1 -1
  160. label_studio_sdk/types/local_files_export_storage.py +8 -12
  161. label_studio_sdk/types/local_files_import_storage.py +8 -12
  162. label_studio_sdk/types/{annotation_filter_options.py → lse_annotation_filter_options.py} +12 -2
  163. label_studio_sdk/types/lse_annotation_filter_options_request.py +42 -0
  164. label_studio_sdk/types/lse_annotation_filter_options_request_reviewed.py +7 -0
  165. label_studio_sdk/types/lse_annotation_filter_options_reviewed.py +7 -0
  166. label_studio_sdk/types/{export_snapshot.py → lse_export_create.py} +11 -11
  167. label_studio_sdk/types/lse_fields.py +49 -0
  168. label_studio_sdk/types/lse_fields_onboarding_state.py +8 -0
  169. label_studio_sdk/types/lse_fields_trial_role.py +8 -0
  170. label_studio_sdk/types/lse_key_indicator_value.py +35 -0
  171. label_studio_sdk/types/lse_organization.py +57 -0
  172. label_studio_sdk/types/lse_organization_custom_scripts_editable_by.py +7 -0
  173. label_studio_sdk/types/{key_indicators_item_additional_kpis_item.py → lse_organization_member_list.py} +12 -7
  174. label_studio_sdk/types/lse_project_create.py +196 -0
  175. label_studio_sdk/types/lse_project_create_sampling.py +7 -0
  176. label_studio_sdk/types/lse_project_create_skip_queue.py +7 -0
  177. label_studio_sdk/types/lse_project_update.py +215 -0
  178. label_studio_sdk/types/lse_project_update_sampling.py +7 -0
  179. label_studio_sdk/types/lse_project_update_skip_queue.py +7 -0
  180. label_studio_sdk/types/lse_s3export_storage.py +134 -0
  181. label_studio_sdk/{import_storage/s3/types/s3create_response.py → types/lse_s3export_storage_request.py} +47 -21
  182. label_studio_sdk/{import_storage/s3/types/s3update_response.py → types/lse_s3import_storage.py} +60 -21
  183. label_studio_sdk/types/{s3s_import_storage.py → lse_s3import_storage_request.py} +32 -21
  184. label_studio_sdk/types/lse_task.py +117 -0
  185. label_studio_sdk/types/{data_manager_task_serializer_drafts_item.py → lse_task_drafts_item.py} +2 -2
  186. label_studio_sdk/types/lse_task_filter_options.py +63 -0
  187. label_studio_sdk/types/lse_task_filter_options_annotated.py +7 -0
  188. label_studio_sdk/types/lse_task_filter_options_finished.py +7 -0
  189. label_studio_sdk/types/lse_task_filter_options_request.py +63 -0
  190. label_studio_sdk/types/lse_task_filter_options_request_annotated.py +7 -0
  191. label_studio_sdk/types/lse_task_filter_options_request_finished.py +7 -0
  192. label_studio_sdk/types/lse_task_filter_options_request_reviewed.py +7 -0
  193. label_studio_sdk/types/lse_task_filter_options_request_skipped.py +7 -0
  194. label_studio_sdk/types/lse_task_filter_options_reviewed.py +7 -0
  195. label_studio_sdk/types/lse_task_filter_options_skipped.py +7 -0
  196. label_studio_sdk/types/{data_manager_task_serializer_predictions_item.py → lse_task_predictions_item.py} +4 -5
  197. label_studio_sdk/types/lse_task_serializer_for_annotators.py +54 -0
  198. label_studio_sdk/types/lse_task_serializer_for_annotators_drafts_item.py +22 -0
  199. label_studio_sdk/types/lse_task_serializer_for_annotators_predictions_item.py +28 -0
  200. label_studio_sdk/types/lse_task_serializer_for_reviewers.py +117 -0
  201. label_studio_sdk/types/lse_task_serializer_for_reviewers_drafts_item.py +22 -0
  202. label_studio_sdk/types/lse_task_serializer_for_reviewers_predictions_item.py +28 -0
  203. label_studio_sdk/types/lse_user.py +49 -0
  204. label_studio_sdk/types/{base_user.py → lse_user_api.py} +17 -6
  205. label_studio_sdk/types/lse_user_organization_member_list.py +48 -0
  206. label_studio_sdk/types/lseapi_token_create.py +21 -0
  207. label_studio_sdk/types/lseapi_token_list.py +21 -0
  208. label_studio_sdk/types/lsejwt_settings.py +32 -0
  209. label_studio_sdk/types/maybe_expanded_comment.py +7 -0
  210. label_studio_sdk/types/ml_backend.py +16 -17
  211. label_studio_sdk/types/mode_enum.py +5 -0
  212. label_studio_sdk/types/model_interface.py +44 -0
  213. label_studio_sdk/types/model_interface_request.py +40 -0
  214. label_studio_sdk/types/model_interface_serializer_get.py +45 -0
  215. label_studio_sdk/types/model_provider_connection.py +48 -17
  216. label_studio_sdk/types/model_provider_connection_budget_reset_period.py +3 -1
  217. label_studio_sdk/types/model_provider_connection_request.py +71 -0
  218. label_studio_sdk/types/model_run.py +40 -0
  219. label_studio_sdk/types/{inference_run_status.py → model_run_status_enum.py} +1 -1
  220. label_studio_sdk/types/null_enum.py +3 -0
  221. label_studio_sdk/types/onboarding_state_enum.py +7 -0
  222. label_studio_sdk/types/organization_billing.py +20 -0
  223. label_studio_sdk/types/organization_id.py +28 -0
  224. label_studio_sdk/types/organization_invite.py +20 -0
  225. label_studio_sdk/types/organization_member.py +37 -0
  226. label_studio_sdk/types/organization_membership.py +24 -0
  227. label_studio_sdk/{projects/types/projects_list_response.py → types/paginated_all_roles_project_list_list.py} +5 -5
  228. label_studio_sdk/types/paginated_lse_organization_member_list_list.py +23 -0
  229. label_studio_sdk/types/{jwt_settings_response.py → paginated_role_based_task_list.py} +11 -9
  230. label_studio_sdk/types/pause.py +55 -14
  231. label_studio_sdk/types/pause_request.py +41 -0
  232. label_studio_sdk/types/prediction.py +7 -11
  233. label_studio_sdk/types/prediction_request.py +56 -0
  234. label_studio_sdk/types/project.py +32 -39
  235. label_studio_sdk/types/project_import.py +12 -13
  236. label_studio_sdk/types/project_label_config.py +2 -2
  237. label_studio_sdk/types/project_label_config_request.py +22 -0
  238. label_studio_sdk/types/project_sampling.py +3 -3
  239. label_studio_sdk/types/project_skip_queue.py +3 -1
  240. label_studio_sdk/types/project_subset_enum.py +5 -0
  241. label_studio_sdk/types/prompts_status_enum.py +16 -0
  242. label_studio_sdk/types/{prompt_version_provider.py → provider_enum.py} +1 -1
  243. label_studio_sdk/types/reason_enum.py +7 -0
  244. label_studio_sdk/types/redis_export_storage.py +8 -12
  245. label_studio_sdk/types/redis_import_storage.py +8 -12
  246. label_studio_sdk/types/refined_prompt_response.py +5 -6
  247. label_studio_sdk/types/requeue_rejected_tasks_mode_enum.py +5 -0
  248. label_studio_sdk/types/review_criteria_enum.py +5 -0
  249. label_studio_sdk/types/review_settings.py +80 -0
  250. label_studio_sdk/types/review_settings_request.py +80 -0
  251. label_studio_sdk/types/review_settings_request_requeue_rejected_tasks_mode.py +8 -0
  252. label_studio_sdk/types/review_settings_request_review_criteria.py +7 -0
  253. label_studio_sdk/types/review_settings_requeue_rejected_tasks_mode.py +8 -0
  254. label_studio_sdk/types/review_settings_review_criteria.py +7 -0
  255. label_studio_sdk/types/reviewed_enum.py +5 -0
  256. label_studio_sdk/types/role9e7enum.py +5 -0
  257. label_studio_sdk/types/role_based_task.py +8 -0
  258. label_studio_sdk/types/s3export_storage.py +8 -12
  259. label_studio_sdk/types/s3import_storage.py +8 -12
  260. label_studio_sdk/types/sampling_enum.py +7 -0
  261. label_studio_sdk/types/scope_enum.py +5 -0
  262. label_studio_sdk/types/selected_items_request.py +23 -0
  263. label_studio_sdk/types/serialization_option.py +2 -6
  264. label_studio_sdk/types/serialization_option_request.py +22 -0
  265. label_studio_sdk/types/serialization_options.py +17 -5
  266. label_studio_sdk/types/serialization_options_request.py +47 -0
  267. label_studio_sdk/types/skill_name_enum.py +5 -0
  268. label_studio_sdk/types/skip_queue_enum.py +5 -0
  269. label_studio_sdk/types/skipped_enum.py +5 -0
  270. label_studio_sdk/types/state_enum.py +5 -0
  271. label_studio_sdk/types/status7bf_enum.py +5 -0
  272. label_studio_sdk/types/{azure_blob_import_storage_status.py → status_c5a_enum.py} +2 -2
  273. label_studio_sdk/types/third_party_model_version.py +65 -0
  274. label_studio_sdk/types/third_party_model_version_request.py +54 -0
  275. label_studio_sdk/types/token_refresh_response.py +19 -0
  276. label_studio_sdk/types/token_rotate_response.py +19 -0
  277. label_studio_sdk/types/trial_role_enum.py +16 -0
  278. label_studio_sdk/types/user_simple.py +8 -5
  279. label_studio_sdk/types/user_simple_request.py +28 -0
  280. label_studio_sdk/types/version_response.py +49 -0
  281. label_studio_sdk/types/view.py +8 -15
  282. label_studio_sdk/types/webhook.py +9 -13
  283. label_studio_sdk/types/webhook_serializer_for_update.py +15 -13
  284. label_studio_sdk/types/workspace.py +14 -34
  285. label_studio_sdk/types/workspace_member_create.py +27 -0
  286. label_studio_sdk/types/workspace_member_list.py +24 -0
  287. label_studio_sdk/users/client.py +604 -87
  288. label_studio_sdk/users/types/users_get_token_response.py +4 -11
  289. label_studio_sdk/users/types/users_reset_token_response.py +4 -11
  290. label_studio_sdk/versions/__init__.py +0 -3
  291. label_studio_sdk/versions/client.py +14 -14
  292. label_studio_sdk/views/client.py +227 -141
  293. label_studio_sdk/views/types/views_create_request_data.py +2 -2
  294. label_studio_sdk/views/types/views_create_request_data_filters.py +2 -2
  295. label_studio_sdk/views/types/views_create_request_data_filters_items_item.py +2 -2
  296. label_studio_sdk/views/types/views_update_request_data.py +2 -2
  297. label_studio_sdk/views/types/views_update_request_data_filters.py +2 -2
  298. label_studio_sdk/views/types/views_update_request_data_filters_items_item.py +2 -2
  299. label_studio_sdk/webhooks/__init__.py +36 -2
  300. label_studio_sdk/webhooks/client.py +173 -367
  301. label_studio_sdk/webhooks/types/__init__.py +34 -2
  302. label_studio_sdk/webhooks/types/webhooks_info_response.py +80 -0
  303. label_studio_sdk/webhooks/types/webhooks_info_response_annotation_created.py +24 -0
  304. label_studio_sdk/webhooks/types/webhooks_info_response_annotation_updated.py +24 -0
  305. label_studio_sdk/webhooks/types/webhooks_info_response_annotations_created.py +24 -0
  306. label_studio_sdk/webhooks/types/webhooks_info_response_annotations_deleted.py +24 -0
  307. label_studio_sdk/webhooks/types/webhooks_info_response_label_link_created.py +24 -0
  308. label_studio_sdk/webhooks/types/webhooks_info_response_label_link_deleted.py +24 -0
  309. label_studio_sdk/webhooks/types/webhooks_info_response_label_link_updated.py +24 -0
  310. label_studio_sdk/webhooks/types/webhooks_info_response_project_created.py +24 -0
  311. label_studio_sdk/webhooks/types/webhooks_info_response_project_deleted.py +24 -0
  312. label_studio_sdk/webhooks/types/webhooks_info_response_project_updated.py +24 -0
  313. label_studio_sdk/webhooks/types/webhooks_info_response_review_created.py +24 -0
  314. label_studio_sdk/webhooks/types/webhooks_info_response_review_updated.py +24 -0
  315. label_studio_sdk/webhooks/types/webhooks_info_response_reviews_deleted.py +24 -0
  316. label_studio_sdk/webhooks/types/webhooks_info_response_tasks_created.py +24 -0
  317. label_studio_sdk/webhooks/types/webhooks_info_response_tasks_deleted.py +24 -0
  318. label_studio_sdk/workspaces/__init__.py +1 -2
  319. label_studio_sdk/workspaces/client.py +97 -117
  320. label_studio_sdk/workspaces/members/__init__.py +0 -3
  321. label_studio_sdk/workspaces/members/client.py +65 -81
  322. {label_studio_sdk-1.0.20.dist-info → label_studio_sdk-2.0.1.dist-info}/METADATA +73 -25
  323. label_studio_sdk-2.0.1.dist-info/RECORD +435 -0
  324. {label_studio_sdk-1.0.20.dist-info → label_studio_sdk-2.0.1.dist-info}/WHEEL +1 -1
  325. label_studio_sdk/annotations/types/annotations_create_bulk_request_selected_items.py +0 -34
  326. label_studio_sdk/export_storage/azure/types/__init__.py +0 -6
  327. label_studio_sdk/export_storage/azure/types/azure_create_response.py +0 -57
  328. label_studio_sdk/export_storage/azure/types/azure_update_response.py +0 -57
  329. label_studio_sdk/export_storage/gcs/types/__init__.py +0 -6
  330. label_studio_sdk/export_storage/gcs/types/gcs_create_response.py +0 -57
  331. label_studio_sdk/export_storage/gcs/types/gcs_update_response.py +0 -57
  332. label_studio_sdk/export_storage/local/types/__init__.py +0 -6
  333. label_studio_sdk/export_storage/local/types/local_create_response.py +0 -47
  334. label_studio_sdk/export_storage/local/types/local_update_response.py +0 -47
  335. label_studio_sdk/export_storage/redis/types/__init__.py +0 -6
  336. label_studio_sdk/export_storage/redis/types/redis_create_response.py +0 -62
  337. label_studio_sdk/export_storage/redis/types/redis_update_response.py +0 -62
  338. label_studio_sdk/export_storage/s3/types/__init__.py +0 -6
  339. label_studio_sdk/export_storage/s3/types/s3create_response.py +0 -81
  340. label_studio_sdk/export_storage/s3/types/s3update_response.py +0 -81
  341. label_studio_sdk/import_storage/azure/types/__init__.py +0 -6
  342. label_studio_sdk/import_storage/azure/types/azure_create_response.py +0 -72
  343. label_studio_sdk/import_storage/azure/types/azure_update_response.py +0 -72
  344. label_studio_sdk/import_storage/gcs/types/__init__.py +0 -6
  345. label_studio_sdk/import_storage/gcs/types/gcs_create_response.py +0 -72
  346. label_studio_sdk/import_storage/gcs/types/gcs_update_response.py +0 -72
  347. label_studio_sdk/import_storage/local/types/__init__.py +0 -6
  348. label_studio_sdk/import_storage/local/types/local_create_response.py +0 -47
  349. label_studio_sdk/import_storage/local/types/local_update_response.py +0 -47
  350. label_studio_sdk/import_storage/redis/types/__init__.py +0 -6
  351. label_studio_sdk/import_storage/redis/types/redis_create_response.py +0 -62
  352. label_studio_sdk/import_storage/redis/types/redis_update_response.py +0 -62
  353. label_studio_sdk/import_storage/s3/types/__init__.py +0 -6
  354. label_studio_sdk/ml/types/ml_create_response.py +0 -68
  355. label_studio_sdk/ml/types/ml_create_response_auth_method.py +0 -5
  356. label_studio_sdk/ml/types/ml_update_response.py +0 -68
  357. label_studio_sdk/ml/types/ml_update_response_auth_method.py +0 -5
  358. label_studio_sdk/projects/exports/types/exports_list_formats_response_item.py +0 -44
  359. label_studio_sdk/projects/types/projects_create_response.py +0 -91
  360. label_studio_sdk/projects/types/projects_update_response.py +0 -96
  361. label_studio_sdk/prompts/types/prompts_batch_failed_predictions_request_failed_predictions_item.py +0 -32
  362. label_studio_sdk/prompts/types/prompts_batch_predictions_request_results_item.py +0 -59
  363. label_studio_sdk/tasks/types/tasks_list_response.py +0 -38
  364. label_studio_sdk/types/annotation_completed_by.py +0 -6
  365. label_studio_sdk/types/azure_blob_export_storage_status.py +0 -7
  366. label_studio_sdk/types/base_task_updated_by.py +0 -7
  367. label_studio_sdk/types/comment_created_by.py +0 -5
  368. label_studio_sdk/types/converted_format_status.py +0 -5
  369. label_studio_sdk/types/data_manager_task_serializer.py +0 -118
  370. label_studio_sdk/types/data_manager_task_serializer_annotators_item.py +0 -5
  371. label_studio_sdk/types/data_manager_task_serializer_comment_authors_item.py +0 -5
  372. label_studio_sdk/types/data_manager_task_serializer_predictions_item_model_run.py +0 -5
  373. label_studio_sdk/types/export_format.py +0 -25
  374. label_studio_sdk/types/export_snapshot_status.py +0 -5
  375. label_studio_sdk/types/export_status.py +0 -5
  376. label_studio_sdk/types/gcs_export_storage_status.py +0 -7
  377. label_studio_sdk/types/gcs_import_storage_status.py +0 -7
  378. label_studio_sdk/types/inference_run.py +0 -34
  379. label_studio_sdk/types/inference_run_created_by.py +0 -5
  380. label_studio_sdk/types/inference_run_organization.py +0 -5
  381. label_studio_sdk/types/inference_run_project_subset.py +0 -5
  382. label_studio_sdk/types/key_indicators.py +0 -6
  383. label_studio_sdk/types/key_indicators_item.py +0 -41
  384. label_studio_sdk/types/local_files_export_storage_status.py +0 -7
  385. label_studio_sdk/types/local_files_import_storage_status.py +0 -7
  386. label_studio_sdk/types/ml_backend_auth_method.py +0 -5
  387. label_studio_sdk/types/ml_backend_state.py +0 -5
  388. label_studio_sdk/types/model_provider_connection_created_by.py +0 -5
  389. label_studio_sdk/types/model_provider_connection_organization.py +0 -5
  390. label_studio_sdk/types/model_provider_connection_provider.py +0 -7
  391. label_studio_sdk/types/model_provider_connection_scope.py +0 -5
  392. label_studio_sdk/types/pause_paused_by.py +0 -5
  393. label_studio_sdk/types/project_import_status.py +0 -5
  394. label_studio_sdk/types/prompt.py +0 -71
  395. label_studio_sdk/types/prompt_associated_projects_item.py +0 -6
  396. label_studio_sdk/types/prompt_created_by.py +0 -5
  397. label_studio_sdk/types/prompt_organization.py +0 -5
  398. label_studio_sdk/types/prompt_version.py +0 -32
  399. label_studio_sdk/types/prompt_version_created_by.py +0 -5
  400. label_studio_sdk/types/prompt_version_organization.py +0 -5
  401. label_studio_sdk/types/redis_export_storage_status.py +0 -7
  402. label_studio_sdk/types/redis_import_storage_status.py +0 -7
  403. label_studio_sdk/types/refined_prompt_response_refinement_status.py +0 -7
  404. label_studio_sdk/types/s3export_storage_status.py +0 -7
  405. label_studio_sdk/types/s3import_storage_status.py +0 -7
  406. label_studio_sdk/types/s3s_export_storage.py +0 -73
  407. label_studio_sdk/types/s3s_import_storage_status.py +0 -7
  408. label_studio_sdk/types/task.py +0 -156
  409. label_studio_sdk/types/task_annotators_item.py +0 -5
  410. label_studio_sdk/types/task_comment_authors_item.py +0 -5
  411. label_studio_sdk/types/task_filter_options.py +0 -39
  412. label_studio_sdk/types/webhook_actions_item.py +0 -21
  413. label_studio_sdk/types/webhook_serializer_for_update_actions_item.py +0 -21
  414. label_studio_sdk/versions/types/__init__.py +0 -6
  415. label_studio_sdk/versions/types/versions_get_response.py +0 -73
  416. label_studio_sdk/versions/types/versions_get_response_edition.py +0 -5
  417. label_studio_sdk/workspaces/members/types/__init__.py +0 -6
  418. label_studio_sdk/workspaces/members/types/members_create_response.py +0 -22
  419. label_studio_sdk/workspaces/members/types/members_list_response_item.py +0 -22
  420. label_studio_sdk-1.0.20.dist-info/RECORD +0 -374
  421. {label_studio_sdk-1.0.20.dist-info → label_studio_sdk-2.0.1.dist-info}/LICENSE +0 -0
@@ -3,12 +3,12 @@
3
3
  import typing
4
4
  from ...core.client_wrapper import SyncClientWrapper
5
5
  from ...core.request_options import RequestOptions
6
- from .types.members_list_response_item import MembersListResponseItem
6
+ from ...types.workspace_member_list import WorkspaceMemberList
7
7
  from ...core.jsonable_encoder import jsonable_encoder
8
- from ...core.pydantic_utilities import parse_obj_as
8
+ from ...core.unchecked_base_model import construct_type
9
9
  from json.decoder import JSONDecodeError
10
10
  from ...core.api_error import ApiError
11
- from .types.members_create_response import MembersCreateResponse
11
+ from ...types.workspace_member_create import WorkspaceMemberCreate
12
12
  from ...core.client_wrapper import AsyncClientWrapper
13
13
 
14
14
  # this is used as the default value for optional parameters
@@ -21,23 +21,21 @@ class MembersClient:
21
21
 
22
22
  def list(
23
23
  self, id: int, *, request_options: typing.Optional[RequestOptions] = None
24
- ) -> typing.List[MembersListResponseItem]:
24
+ ) -> typing.List[WorkspaceMemberList]:
25
25
  """
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).
26
+ Get a list of all members in a specific workspace.
28
27
 
29
28
  Parameters
30
29
  ----------
31
30
  id : int
32
- Workspace ID
33
31
 
34
32
  request_options : typing.Optional[RequestOptions]
35
33
  Request-specific configuration.
36
34
 
37
35
  Returns
38
36
  -------
39
- typing.List[MembersListResponseItem]
40
-
37
+ typing.List[WorkspaceMemberList]
38
+ A list of workspace memberships
41
39
 
42
40
  Examples
43
41
  --------
@@ -51,16 +49,16 @@ class MembersClient:
51
49
  )
52
50
  """
53
51
  _response = self._client_wrapper.httpx_client.request(
54
- f"api/workspaces/{jsonable_encoder(id)}/memberships",
52
+ f"api/workspaces/{jsonable_encoder(id)}/memberships/",
55
53
  method="GET",
56
54
  request_options=request_options,
57
55
  )
58
56
  try:
59
57
  if 200 <= _response.status_code < 300:
60
58
  return typing.cast(
61
- typing.List[MembersListResponseItem],
62
- parse_obj_as(
63
- type_=typing.List[MembersListResponseItem], # type: ignore
59
+ typing.List[WorkspaceMemberList],
60
+ construct_type(
61
+ type_=typing.List[WorkspaceMemberList], # type: ignore
64
62
  object_=_response.json(),
65
63
  ),
66
64
  )
@@ -70,26 +68,32 @@ class MembersClient:
70
68
  raise ApiError(status_code=_response.status_code, body=_response_json)
71
69
 
72
70
  def create(
73
- self, id: int, *, user: typing.Optional[int] = OMIT, request_options: typing.Optional[RequestOptions] = None
74
- ) -> MembersCreateResponse:
71
+ self,
72
+ id: int,
73
+ *,
74
+ user: int,
75
+ workspace: typing.Optional[int] = OMIT,
76
+ request_options: typing.Optional[RequestOptions] = None,
77
+ ) -> WorkspaceMemberCreate:
75
78
  """
76
-
77
- Create a new workspace membership. You will need to provide the workspace ID. You can find this using [List workspaces](list).
79
+ Add a new workspace member by user ID.
78
80
 
79
81
  Parameters
80
82
  ----------
81
83
  id : int
82
- Workspace ID
83
84
 
84
- user : typing.Optional[int]
85
- User ID of the workspace member
85
+ user : int
86
+ User ID
87
+
88
+ workspace : typing.Optional[int]
89
+ Workspace ID
86
90
 
87
91
  request_options : typing.Optional[RequestOptions]
88
92
  Request-specific configuration.
89
93
 
90
94
  Returns
91
95
  -------
92
- MembersCreateResponse
96
+ WorkspaceMemberCreate
93
97
 
94
98
 
95
99
  Examples
@@ -101,13 +105,15 @@ class MembersClient:
101
105
  )
102
106
  client.workspaces.members.create(
103
107
  id=1,
108
+ user=1,
104
109
  )
105
110
  """
106
111
  _response = self._client_wrapper.httpx_client.request(
107
- f"api/workspaces/{jsonable_encoder(id)}/memberships",
112
+ f"api/workspaces/{jsonable_encoder(id)}/memberships/",
108
113
  method="POST",
109
114
  json={
110
115
  "user": user,
116
+ "workspace": workspace,
111
117
  },
112
118
  headers={
113
119
  "content-type": "application/json",
@@ -118,9 +124,9 @@ class MembersClient:
118
124
  try:
119
125
  if 200 <= _response.status_code < 300:
120
126
  return typing.cast(
121
- MembersCreateResponse,
122
- parse_obj_as(
123
- type_=MembersCreateResponse, # type: ignore
127
+ WorkspaceMemberCreate,
128
+ construct_type(
129
+ type_=WorkspaceMemberCreate, # type: ignore
124
130
  object_=_response.json(),
125
131
  ),
126
132
  )
@@ -129,20 +135,13 @@ class MembersClient:
129
135
  raise ApiError(status_code=_response.status_code, body=_response.text)
130
136
  raise ApiError(status_code=_response.status_code, body=_response_json)
131
137
 
132
- def delete(
133
- self, id: int, *, user: typing.Optional[int] = OMIT, request_options: typing.Optional[RequestOptions] = None
134
- ) -> None:
138
+ def delete(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> None:
135
139
  """
136
-
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).
140
+ Remove a specific member by ID from a workspace. This endpoint expects an object like `{"user_id": 123}`.
138
141
 
139
142
  Parameters
140
143
  ----------
141
144
  id : int
142
- Workspace ID
143
-
144
- user : typing.Optional[int]
145
- User ID of the workspace member
146
145
 
147
146
  request_options : typing.Optional[RequestOptions]
148
147
  Request-specific configuration.
@@ -163,16 +162,9 @@ class MembersClient:
163
162
  )
164
163
  """
165
164
  _response = self._client_wrapper.httpx_client.request(
166
- f"api/workspaces/{jsonable_encoder(id)}/memberships",
165
+ f"api/workspaces/{jsonable_encoder(id)}/memberships/",
167
166
  method="DELETE",
168
- json={
169
- "user": user,
170
- },
171
- headers={
172
- "content-type": "application/json",
173
- },
174
167
  request_options=request_options,
175
- omit=OMIT,
176
168
  )
177
169
  try:
178
170
  if 200 <= _response.status_code < 300:
@@ -189,23 +181,21 @@ class AsyncMembersClient:
189
181
 
190
182
  async def list(
191
183
  self, id: int, *, request_options: typing.Optional[RequestOptions] = None
192
- ) -> typing.List[MembersListResponseItem]:
184
+ ) -> typing.List[WorkspaceMemberList]:
193
185
  """
194
-
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).
186
+ Get a list of all members in a specific workspace.
196
187
 
197
188
  Parameters
198
189
  ----------
199
190
  id : int
200
- Workspace ID
201
191
 
202
192
  request_options : typing.Optional[RequestOptions]
203
193
  Request-specific configuration.
204
194
 
205
195
  Returns
206
196
  -------
207
- typing.List[MembersListResponseItem]
208
-
197
+ typing.List[WorkspaceMemberList]
198
+ A list of workspace memberships
209
199
 
210
200
  Examples
211
201
  --------
@@ -227,16 +217,16 @@ class AsyncMembersClient:
227
217
  asyncio.run(main())
228
218
  """
229
219
  _response = await self._client_wrapper.httpx_client.request(
230
- f"api/workspaces/{jsonable_encoder(id)}/memberships",
220
+ f"api/workspaces/{jsonable_encoder(id)}/memberships/",
231
221
  method="GET",
232
222
  request_options=request_options,
233
223
  )
234
224
  try:
235
225
  if 200 <= _response.status_code < 300:
236
226
  return typing.cast(
237
- typing.List[MembersListResponseItem],
238
- parse_obj_as(
239
- type_=typing.List[MembersListResponseItem], # type: ignore
227
+ typing.List[WorkspaceMemberList],
228
+ construct_type(
229
+ type_=typing.List[WorkspaceMemberList], # type: ignore
240
230
  object_=_response.json(),
241
231
  ),
242
232
  )
@@ -246,26 +236,32 @@ class AsyncMembersClient:
246
236
  raise ApiError(status_code=_response.status_code, body=_response_json)
247
237
 
248
238
  async def create(
249
- self, id: int, *, user: typing.Optional[int] = OMIT, request_options: typing.Optional[RequestOptions] = None
250
- ) -> MembersCreateResponse:
239
+ self,
240
+ id: int,
241
+ *,
242
+ user: int,
243
+ workspace: typing.Optional[int] = OMIT,
244
+ request_options: typing.Optional[RequestOptions] = None,
245
+ ) -> WorkspaceMemberCreate:
251
246
  """
252
-
253
- Create a new workspace membership. You will need to provide the workspace ID. You can find this using [List workspaces](list).
247
+ Add a new workspace member by user ID.
254
248
 
255
249
  Parameters
256
250
  ----------
257
251
  id : int
258
- Workspace ID
259
252
 
260
- user : typing.Optional[int]
261
- User ID of the workspace member
253
+ user : int
254
+ User ID
255
+
256
+ workspace : typing.Optional[int]
257
+ Workspace ID
262
258
 
263
259
  request_options : typing.Optional[RequestOptions]
264
260
  Request-specific configuration.
265
261
 
266
262
  Returns
267
263
  -------
268
- MembersCreateResponse
264
+ WorkspaceMemberCreate
269
265
 
270
266
 
271
267
  Examples
@@ -282,16 +278,18 @@ class AsyncMembersClient:
282
278
  async def main() -> None:
283
279
  await client.workspaces.members.create(
284
280
  id=1,
281
+ user=1,
285
282
  )
286
283
 
287
284
 
288
285
  asyncio.run(main())
289
286
  """
290
287
  _response = await self._client_wrapper.httpx_client.request(
291
- f"api/workspaces/{jsonable_encoder(id)}/memberships",
288
+ f"api/workspaces/{jsonable_encoder(id)}/memberships/",
292
289
  method="POST",
293
290
  json={
294
291
  "user": user,
292
+ "workspace": workspace,
295
293
  },
296
294
  headers={
297
295
  "content-type": "application/json",
@@ -302,9 +300,9 @@ class AsyncMembersClient:
302
300
  try:
303
301
  if 200 <= _response.status_code < 300:
304
302
  return typing.cast(
305
- MembersCreateResponse,
306
- parse_obj_as(
307
- type_=MembersCreateResponse, # type: ignore
303
+ WorkspaceMemberCreate,
304
+ construct_type(
305
+ type_=WorkspaceMemberCreate, # type: ignore
308
306
  object_=_response.json(),
309
307
  ),
310
308
  )
@@ -313,20 +311,13 @@ class AsyncMembersClient:
313
311
  raise ApiError(status_code=_response.status_code, body=_response.text)
314
312
  raise ApiError(status_code=_response.status_code, body=_response_json)
315
313
 
316
- async def delete(
317
- self, id: int, *, user: typing.Optional[int] = OMIT, request_options: typing.Optional[RequestOptions] = None
318
- ) -> None:
314
+ async def delete(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> None:
319
315
  """
320
-
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).
316
+ Remove a specific member by ID from a workspace. This endpoint expects an object like `{"user_id": 123}`.
322
317
 
323
318
  Parameters
324
319
  ----------
325
320
  id : int
326
- Workspace ID
327
-
328
- user : typing.Optional[int]
329
- User ID of the workspace member
330
321
 
331
322
  request_options : typing.Optional[RequestOptions]
332
323
  Request-specific configuration.
@@ -355,16 +346,9 @@ class AsyncMembersClient:
355
346
  asyncio.run(main())
356
347
  """
357
348
  _response = await self._client_wrapper.httpx_client.request(
358
- f"api/workspaces/{jsonable_encoder(id)}/memberships",
349
+ f"api/workspaces/{jsonable_encoder(id)}/memberships/",
359
350
  method="DELETE",
360
- json={
361
- "user": user,
362
- },
363
- headers={
364
- "content-type": "application/json",
365
- },
366
351
  request_options=request_options,
367
- omit=OMIT,
368
352
  )
369
353
  try:
370
354
  if 200 <= _response.status_code < 300:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: label-studio-sdk
3
- Version: 1.0.20
3
+ Version: 2.0.1
4
4
  Summary:
5
5
  Requires-Python: >=3.9,<4
6
6
  Classifier: Intended Audience :: Developers
@@ -45,29 +45,6 @@ Description-Content-Type: text/markdown
45
45
 
46
46
  # Label Studio Python Library
47
47
 
48
- <!-- Note about deprecated version <1 -->
49
- ---
50
- > :warning: **Note**<br/>
51
- >
52
- > The version of `label-studio-sdk<1` is deprecated and no longer supported. We recommend updating to the latest version.
53
- > If you still want to use the old version, you can install it with `pip install "label-studio-sdk<1"`.
54
- > OR You can find the branch with the old version by cloning the repository and checking out the branch as follows:
55
- >
56
- > ```sh
57
- > git clone https://github.com/HumanSignal/label-studio-sdk.git
58
- > cd label-studio-sdk
59
- > git fetch origin
60
- > git checkout release/0.0.34
61
- > ```
62
- >
63
- > OR you can change your import statements as follows:
64
- > ```python
65
- > from label_studio_sdk import Client
66
- > from label_studio_sdk.data_manager import Filters, Column, Operator, Type
67
- > from label_studio_sdk._legacy import Project
68
- > ```
69
- ---
70
-
71
48
  [![fern shield](https://img.shields.io/badge/%F0%9F%8C%BF-SDK%20generated%20by%20Fern-brightgreen)](https://github.com/fern-api/fern)
72
49
  [![pypi](https://img.shields.io/pypi/v/label-studio-sdk.svg)](https://pypi.python.org/pypi/label-studio-sdk)
73
50
 
@@ -100,6 +77,77 @@ ls = LabelStudio(
100
77
  )
101
78
  ```
102
79
 
80
+ # Versions
81
+
82
+ ## SDK 2.0.0
83
+
84
+ In August 2025, we released SDK version 2.0.0.
85
+
86
+ This version has a number of documentation and functional improvements over SDK 1.
87
+
88
+ ### Enhancements
89
+
90
+ **Enterprise-only**
91
+
92
+ - Added a new `projects.stats.iaa` endpoint to return stats from the inter-annotator agreement matrix.
93
+ - You can now update tasks that have comments.
94
+ - Added support for `sync` to `S3s` (S3 with IAM role) exports.
95
+
96
+ **Enterprise and open source**
97
+
98
+ - Expanded support to include all project settings, many of which were missing in SDK 1. For example, in Enterprise environments you can now configure `assignment_settings`, `review_settings`, `annotator_evaluation`, and many more.
99
+ - Fixed passing the `project` parameter in `actions.list()` (broken in SDK 1).
100
+ - Relaxed request/response validation reduces pydantic errors in SDK 2.
101
+
102
+ ### Breaking changes
103
+
104
+ **Enterprise-only**
105
+
106
+ - `comments.create` no longer accepts a `project` argument.
107
+ - In `prompts.indicators`, the `pk` parameter is now `id`.
108
+ - In `prompts.runs` and `prompts.versions`, the `id` parameter is now `prompt_id`.
109
+ - `workspaces.members.list` responses are now objects instead of dictionaries.
110
+
111
+ **Enterprise and open source**
112
+
113
+ - In `projects.exports` calls, the project ID is now passed as `id`, while the export ID is passed as `export_pk`.
114
+ - Predictions returned in task responses are now objects instead of dictionaries.
115
+
116
+ ## SDK 1.0+
117
+
118
+ SDK 1 was released in June 2024.
119
+
120
+ If you use the Label Studio SDK 1 package in any automated pipelines, we strongly recommend pinning your SDK version to `<2.0.0` until you can reconcile the breaking changes.
121
+
122
+
123
+ ## SDK <1
124
+
125
+ The version of `label-studio-sdk<1` is deprecated and no longer supported. We recommend updating to the latest version.
126
+
127
+ <details>
128
+
129
+ <summary> To use SDK <1 </summary>
130
+
131
+ If you still want to use the deprecated version, you can install it with `pip install "label-studio-sdk<1"`.
132
+
133
+ OR You can find the branch with the old version by cloning the repository and checking out the branch as follows:
134
+
135
+ ```sh
136
+ git clone https://github.com/HumanSignal/label-studio-sdk.git
137
+ cd label-studio-sdk
138
+ git fetch origin
139
+ git checkout release/0.0.34
140
+ ```
141
+
142
+ OR you can change your import statements as follows:
143
+ ```python
144
+ from label_studio_sdk import Client
145
+ from label_studio_sdk.data_manager import Filters, Column, Operator, Type
146
+ from label_studio_sdk._legacy import Project
147
+ ```
148
+
149
+ </details>
150
+
103
151
  # Examples
104
152
 
105
153
  Check more examples [here](https://api.labelstud.io/).
@@ -111,7 +159,7 @@ from label_studio_sdk.label_interface import LabelInterface
111
159
  from label_studio_sdk.label_interface.create import labels
112
160
 
113
161
  project = ls.projects.create(
114
- name="Project name",
162
+ title="Project name",
115
163
  description="Project description",
116
164
  label_config=LabelInterface.create({
117
165
  "image": "Image",