label-studio-sdk 1.0.2__tar.gz → 1.0.4__tar.gz

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 (286) hide show
  1. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/PKG-INFO +11 -12
  2. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/README.md +10 -11
  3. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/pyproject.toml +1 -1
  4. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/__init__.py +20 -1
  5. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/actions/client.py +8 -8
  6. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/annotations/client.py +24 -24
  7. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/base_client.py +3 -0
  8. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/core/client_wrapper.py +1 -1
  9. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/core/http_client.py +36 -8
  10. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/core/request_options.py +2 -2
  11. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/export_storage/__init__.py +2 -1
  12. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/export_storage/azure/client.py +28 -28
  13. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/export_storage/client.py +7 -4
  14. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/export_storage/gcs/client.py +28 -28
  15. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/export_storage/local/client.py +28 -28
  16. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/export_storage/redis/client.py +28 -28
  17. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/export_storage/s3/client.py +28 -28
  18. label_studio_sdk-1.0.4/src/label_studio_sdk/export_storage/s3s/client.py +836 -0
  19. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/files/client.py +24 -24
  20. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/import_storage/__init__.py +2 -1
  21. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/import_storage/azure/client.py +28 -28
  22. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/import_storage/client.py +7 -4
  23. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/import_storage/gcs/client.py +28 -28
  24. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/import_storage/local/client.py +28 -28
  25. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/import_storage/redis/client.py +28 -28
  26. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/import_storage/s3/client.py +28 -28
  27. label_studio_sdk-1.0.4/src/label_studio_sdk/import_storage/s3s/client.py +1054 -0
  28. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/label_interface/base.py +2 -2
  29. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/label_interface/control_tags.py +32 -18
  30. label_studio_sdk-1.0.4/src/label_studio_sdk/label_interface/create.py +241 -0
  31. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/label_interface/interface.py +68 -0
  32. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/label_interface/object_tags.py +26 -10
  33. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/label_interface/objects.py +5 -5
  34. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/ml/client.py +36 -36
  35. label_studio_sdk-1.0.4/src/label_studio_sdk/predictions/__init__.py +2 -0
  36. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/predictions/client.py +24 -24
  37. label_studio_sdk-1.0.4/src/label_studio_sdk/projects/__init__.py +12 -0
  38. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/projects/client.py +232 -69
  39. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/projects/client_ext.py +16 -1
  40. label_studio_sdk-1.0.4/src/label_studio_sdk/projects/exports/__init__.py +2 -0
  41. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/projects/exports/client.py +38 -38
  42. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/projects/types/__init__.py +2 -1
  43. label_studio_sdk-1.0.4/src/label_studio_sdk/projects/types/projects_update_response.py +96 -0
  44. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/tasks/client.py +70 -60
  45. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/tasks/client_ext.py +4 -0
  46. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/__init__.py +16 -0
  47. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/base_task.py +4 -2
  48. label_studio_sdk-1.0.4/src/label_studio_sdk/types/base_task_file_upload.py +5 -0
  49. label_studio_sdk-1.0.4/src/label_studio_sdk/types/base_task_updated_by.py +5 -0
  50. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/data_manager_task_serializer.py +3 -2
  51. label_studio_sdk-1.0.4/src/label_studio_sdk/types/data_manager_task_serializer_annotators_item.py +5 -0
  52. label_studio_sdk-1.0.4/src/label_studio_sdk/types/s3s_export_storage.py +80 -0
  53. label_studio_sdk-1.0.4/src/label_studio_sdk/types/s3s_import_storage.py +129 -0
  54. label_studio_sdk-1.0.4/src/label_studio_sdk/types/s3s_import_storage_status.py +7 -0
  55. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/task.py +3 -2
  56. label_studio_sdk-1.0.4/src/label_studio_sdk/types/task_annotators_item.py +5 -0
  57. label_studio_sdk-1.0.4/src/label_studio_sdk/types/workspace.py +77 -0
  58. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/users/client.py +32 -32
  59. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/views/client.py +24 -24
  60. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/webhooks/client.py +24 -24
  61. label_studio_sdk-1.0.4/src/label_studio_sdk/workspaces/__init__.py +6 -0
  62. label_studio_sdk-1.0.4/src/label_studio_sdk/workspaces/client.py +569 -0
  63. label_studio_sdk-1.0.4/src/label_studio_sdk/workspaces/members/__init__.py +5 -0
  64. label_studio_sdk-1.0.4/src/label_studio_sdk/workspaces/members/client.py +297 -0
  65. label_studio_sdk-1.0.4/src/label_studio_sdk/workspaces/members/types/__init__.py +6 -0
  66. label_studio_sdk-1.0.4/src/label_studio_sdk/workspaces/members/types/members_create_response.py +32 -0
  67. label_studio_sdk-1.0.4/src/label_studio_sdk/workspaces/members/types/members_list_response_item.py +32 -0
  68. label_studio_sdk-1.0.2/src/label_studio_sdk/projects/__init__.py +0 -6
  69. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/_extensions/__init__.py +0 -0
  70. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/_extensions/label_studio_tools/__init__.py +0 -0
  71. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/_extensions/label_studio_tools/core/__init__.py +0 -0
  72. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/_extensions/label_studio_tools/core/label_config.py +0 -0
  73. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/_extensions/label_studio_tools/core/utils/__init__.py +0 -0
  74. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/_extensions/label_studio_tools/core/utils/exceptions.py +0 -0
  75. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/_extensions/label_studio_tools/core/utils/io.py +0 -0
  76. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/_extensions/label_studio_tools/core/utils/params.py +0 -0
  77. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/_extensions/label_studio_tools/etl/__init__.py +0 -0
  78. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/_extensions/label_studio_tools/etl/beam.py +0 -0
  79. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/_extensions/label_studio_tools/etl/example.py +0 -0
  80. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/_extensions/label_studio_tools/etl/registry.py +0 -0
  81. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/_extensions/label_studio_tools/postprocessing/__init__.py +0 -0
  82. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/_extensions/label_studio_tools/postprocessing/video.py +0 -0
  83. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/_extensions/pager_ext.py +0 -0
  84. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/_legacy/__init__.py +0 -0
  85. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/_legacy/client.py +0 -0
  86. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/_legacy/exceptions.py +0 -0
  87. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/_legacy/project.py +0 -0
  88. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/_legacy/schema/label_config_schema.json +0 -0
  89. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/_legacy/users.py +0 -0
  90. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/_legacy/utils.py +0 -0
  91. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/_legacy/workspaces.py +0 -0
  92. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/actions/__init__.py +0 -0
  93. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/actions/types/__init__.py +0 -0
  94. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/actions/types/actions_create_request_filters.py +0 -0
  95. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/actions/types/actions_create_request_filters_conjunction.py +0 -0
  96. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/actions/types/actions_create_request_filters_items_item.py +0 -0
  97. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/actions/types/actions_create_request_filters_items_item_filter.py +0 -0
  98. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/actions/types/actions_create_request_filters_items_item_operator.py +0 -0
  99. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/actions/types/actions_create_request_filters_items_item_value.py +0 -0
  100. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/actions/types/actions_create_request_id.py +0 -0
  101. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/actions/types/actions_create_request_ordering_item.py +0 -0
  102. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/actions/types/actions_create_request_selected_items.py +0 -0
  103. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/actions/types/actions_create_request_selected_items_excluded.py +0 -0
  104. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/actions/types/actions_create_request_selected_items_included.py +0 -0
  105. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/annotations/__init__.py +0 -0
  106. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/client.py +0 -0
  107. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/converter/__init__.py +0 -0
  108. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/converter/audio.py +0 -0
  109. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/converter/brush.py +0 -0
  110. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/converter/converter.py +0 -0
  111. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/converter/exports/__init__.py +0 -0
  112. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/converter/exports/csv.py +0 -0
  113. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/converter/exports/csv2.py +0 -0
  114. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/converter/funsd.py +0 -0
  115. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/converter/imports/__init__.py +0 -0
  116. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/converter/imports/coco.py +0 -0
  117. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/converter/imports/colors.py +0 -0
  118. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/converter/imports/label_config.py +0 -0
  119. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/converter/imports/pathtrack.py +0 -0
  120. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/converter/imports/yolo.py +0 -0
  121. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/converter/main.py +0 -0
  122. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/converter/utils.py +0 -0
  123. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/core/__init__.py +0 -0
  124. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/core/api_error.py +0 -0
  125. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/core/datetime_utils.py +0 -0
  126. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/core/file.py +0 -0
  127. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/core/jsonable_encoder.py +0 -0
  128. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/core/pagination.py +0 -0
  129. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/core/pydantic_utilities.py +0 -0
  130. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/core/query_encoder.py +0 -0
  131. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/core/remove_none_from_dict.py +0 -0
  132. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/data_manager.py +0 -0
  133. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/environment.py +0 -0
  134. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/errors/__init__.py +0 -0
  135. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/errors/bad_request_error.py +0 -0
  136. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/errors/internal_server_error.py +0 -0
  137. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/export_storage/azure/__init__.py +0 -0
  138. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/export_storage/azure/types/__init__.py +0 -0
  139. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/export_storage/azure/types/azure_create_response.py +0 -0
  140. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/export_storage/azure/types/azure_update_response.py +0 -0
  141. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/export_storage/gcs/__init__.py +0 -0
  142. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/export_storage/gcs/types/__init__.py +0 -0
  143. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/export_storage/gcs/types/gcs_create_response.py +0 -0
  144. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/export_storage/gcs/types/gcs_update_response.py +0 -0
  145. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/export_storage/local/__init__.py +0 -0
  146. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/export_storage/local/types/__init__.py +0 -0
  147. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/export_storage/local/types/local_create_response.py +0 -0
  148. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/export_storage/local/types/local_update_response.py +0 -0
  149. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/export_storage/redis/__init__.py +0 -0
  150. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/export_storage/redis/types/__init__.py +0 -0
  151. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/export_storage/redis/types/redis_create_response.py +0 -0
  152. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/export_storage/redis/types/redis_update_response.py +0 -0
  153. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/export_storage/s3/__init__.py +0 -0
  154. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/export_storage/s3/types/__init__.py +0 -0
  155. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/export_storage/s3/types/s3create_response.py +0 -0
  156. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/export_storage/s3/types/s3update_response.py +0 -0
  157. {label_studio_sdk-1.0.2/src/label_studio_sdk/files → label_studio_sdk-1.0.4/src/label_studio_sdk/export_storage/s3s}/__init__.py +0 -0
  158. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/export_storage/types/__init__.py +0 -0
  159. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/export_storage/types/export_storage_list_types_response_item.py +0 -0
  160. {label_studio_sdk-1.0.2/src/label_studio_sdk/predictions → label_studio_sdk-1.0.4/src/label_studio_sdk/files}/__init__.py +0 -0
  161. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/import_storage/azure/__init__.py +0 -0
  162. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/import_storage/azure/types/__init__.py +0 -0
  163. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/import_storage/azure/types/azure_create_response.py +0 -0
  164. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/import_storage/azure/types/azure_update_response.py +0 -0
  165. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/import_storage/gcs/__init__.py +0 -0
  166. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/import_storage/gcs/types/__init__.py +0 -0
  167. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/import_storage/gcs/types/gcs_create_response.py +0 -0
  168. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/import_storage/gcs/types/gcs_update_response.py +0 -0
  169. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/import_storage/local/__init__.py +0 -0
  170. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/import_storage/local/types/__init__.py +0 -0
  171. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/import_storage/local/types/local_create_response.py +0 -0
  172. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/import_storage/local/types/local_update_response.py +0 -0
  173. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/import_storage/redis/__init__.py +0 -0
  174. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/import_storage/redis/types/__init__.py +0 -0
  175. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/import_storage/redis/types/redis_create_response.py +0 -0
  176. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/import_storage/redis/types/redis_update_response.py +0 -0
  177. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/import_storage/s3/__init__.py +0 -0
  178. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/import_storage/s3/types/__init__.py +0 -0
  179. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/import_storage/s3/types/s3create_response.py +0 -0
  180. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/import_storage/s3/types/s3update_response.py +0 -0
  181. {label_studio_sdk-1.0.2/src/label_studio_sdk/projects/exports → label_studio_sdk-1.0.4/src/label_studio_sdk/import_storage/s3s}/__init__.py +0 -0
  182. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/import_storage/types/__init__.py +0 -0
  183. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/import_storage/types/import_storage_list_types_response_item.py +0 -0
  184. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/label_interface/__init__.py +0 -0
  185. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/label_interface/data_examples.json +0 -0
  186. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/label_interface/label_tags.py +0 -0
  187. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/label_interface/region.py +0 -0
  188. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/ml/__init__.py +0 -0
  189. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/ml/types/__init__.py +0 -0
  190. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/ml/types/ml_create_request_auth_method.py +0 -0
  191. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/ml/types/ml_create_response.py +0 -0
  192. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/ml/types/ml_create_response_auth_method.py +0 -0
  193. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/ml/types/ml_update_request_auth_method.py +0 -0
  194. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/ml/types/ml_update_response.py +0 -0
  195. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/ml/types/ml_update_response_auth_method.py +0 -0
  196. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/projects/types/projects_create_response.py +0 -0
  197. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/projects/types/projects_import_tasks_response.py +0 -0
  198. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/projects/types/projects_list_response.py +0 -0
  199. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/py.typed +0 -0
  200. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/tasks/__init__.py +0 -0
  201. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/tasks/types/__init__.py +0 -0
  202. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/tasks/types/tasks_list_request_fields.py +0 -0
  203. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/tasks/types/tasks_list_response.py +0 -0
  204. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/annotation.py +0 -0
  205. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/annotation_filter_options.py +0 -0
  206. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/annotation_last_action.py +0 -0
  207. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/annotations_dm_field.py +0 -0
  208. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/annotations_dm_field_last_action.py +0 -0
  209. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/azure_blob_export_storage.py +0 -0
  210. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/azure_blob_export_storage_status.py +0 -0
  211. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/azure_blob_import_storage.py +0 -0
  212. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/azure_blob_import_storage_status.py +0 -0
  213. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/base_user.py +0 -0
  214. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/converted_format.py +0 -0
  215. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/converted_format_status.py +0 -0
  216. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/data_manager_task_serializer_drafts_item.py +0 -0
  217. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/data_manager_task_serializer_predictions_item.py +0 -0
  218. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/export.py +0 -0
  219. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/export_convert.py +0 -0
  220. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/export_create.py +0 -0
  221. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/export_create_status.py +0 -0
  222. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/export_status.py +0 -0
  223. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/file_upload.py +0 -0
  224. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/filter.py +0 -0
  225. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/filter_group.py +0 -0
  226. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/gcs_export_storage.py +0 -0
  227. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/gcs_export_storage_status.py +0 -0
  228. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/gcs_import_storage.py +0 -0
  229. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/gcs_import_storage_status.py +0 -0
  230. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/local_files_export_storage.py +0 -0
  231. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/local_files_export_storage_status.py +0 -0
  232. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/local_files_import_storage.py +0 -0
  233. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/local_files_import_storage_status.py +0 -0
  234. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/ml_backend.py +0 -0
  235. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/ml_backend_auth_method.py +0 -0
  236. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/ml_backend_state.py +0 -0
  237. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/prediction.py +0 -0
  238. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/project.py +0 -0
  239. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/project_import.py +0 -0
  240. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/project_import_status.py +0 -0
  241. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/project_label_config.py +0 -0
  242. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/project_sampling.py +0 -0
  243. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/project_skip_queue.py +0 -0
  244. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/redis_export_storage.py +0 -0
  245. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/redis_export_storage_status.py +0 -0
  246. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/redis_import_storage.py +0 -0
  247. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/redis_import_storage_status.py +0 -0
  248. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/s3export_storage.py +0 -0
  249. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/s3export_storage_status.py +0 -0
  250. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/s3import_storage.py +0 -0
  251. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/s3import_storage_status.py +0 -0
  252. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/serialization_option.py +0 -0
  253. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/serialization_options.py +0 -0
  254. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/task_filter_options.py +0 -0
  255. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/user_simple.py +0 -0
  256. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/view.py +0 -0
  257. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/webhook.py +0 -0
  258. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/webhook_actions_item.py +0 -0
  259. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/webhook_serializer_for_update.py +0 -0
  260. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/types/webhook_serializer_for_update_actions_item.py +0 -0
  261. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/users/__init__.py +0 -0
  262. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/users/types/__init__.py +0 -0
  263. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/users/types/users_get_token_response.py +0 -0
  264. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/users/types/users_reset_token_response.py +0 -0
  265. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/version.py +0 -0
  266. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/views/__init__.py +0 -0
  267. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/views/types/__init__.py +0 -0
  268. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/views/types/views_create_request_data.py +0 -0
  269. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/views/types/views_create_request_data_filters.py +0 -0
  270. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/views/types/views_create_request_data_filters_conjunction.py +0 -0
  271. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/views/types/views_create_request_data_filters_items_item.py +0 -0
  272. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/views/types/views_create_request_data_filters_items_item_filter.py +0 -0
  273. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/views/types/views_create_request_data_filters_items_item_operator.py +0 -0
  274. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/views/types/views_create_request_data_filters_items_item_value.py +0 -0
  275. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/views/types/views_create_request_data_ordering_item.py +0 -0
  276. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/views/types/views_update_request_data.py +0 -0
  277. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/views/types/views_update_request_data_filters.py +0 -0
  278. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/views/types/views_update_request_data_filters_conjunction.py +0 -0
  279. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/views/types/views_update_request_data_filters_items_item.py +0 -0
  280. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/views/types/views_update_request_data_filters_items_item_filter.py +0 -0
  281. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/views/types/views_update_request_data_filters_items_item_operator.py +0 -0
  282. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/views/types/views_update_request_data_filters_items_item_value.py +0 -0
  283. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/views/types/views_update_request_data_ordering_item.py +0 -0
  284. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/webhooks/__init__.py +0 -0
  285. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/webhooks/types/__init__.py +0 -0
  286. {label_studio_sdk-1.0.2 → label_studio_sdk-1.0.4}/src/label_studio_sdk/webhooks/types/webhooks_update_request_actions_item.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: label-studio-sdk
3
- Version: 1.0.2
3
+ Version: 1.0.4
4
4
  Summary:
5
5
  Requires-Python: >=3.8,<4.0
6
6
  Classifier: Intended Audience :: Developers
@@ -47,12 +47,13 @@ Description-Content-Type: text/markdown
47
47
  > ```sh
48
48
  > git clone https://github.com/HumanSignal/label-studio-sdk.git
49
49
  > cd label-studio-sdk
50
- > git checkout previous-version
50
+ > git fetch origin
51
+ > git checkout release/0.0.34
51
52
  > ```
52
53
  >
53
54
  > OR you can change your import statements as follows:
54
55
  > ```python
55
- > from label_studio_sdk import Client
56
+ > from label_studio_sdk._legacy import Client
56
57
  > from label_studio_sdk.data_manager import Filters, Column, Operator, Type
57
58
  > from label_studio_sdk._legacy import Project
58
59
  > ```
@@ -97,18 +98,16 @@ Check more examples [here](https://api.labelstud.io/).
97
98
  ## Create a new project
98
99
 
99
100
  ```python
101
+ from label_studio_sdk.label_interface import LabelInterface
102
+ from label_studio_sdk.label_interface.create import labels
103
+
100
104
  project = ls.projects.create(
101
105
  name="Project name",
102
106
  description="Project description",
103
- label_config="""
104
- <View>
105
- <Image name="image" value="$image" />
106
- <RectangleLabels name="label" toName="image">
107
- <Label value="cat" />
108
- <Label value="dog" />
109
- </RectangleLabels>
110
- </View>
111
- """
107
+ label_config=LabelInterface.create({
108
+ "image": "Image",
109
+ "bbox": labels(["cat", "dog"], tag_type="RectangleLabels")
110
+ })
112
111
  )
113
112
  ```
114
113
 
@@ -11,12 +11,13 @@
11
11
  > ```sh
12
12
  > git clone https://github.com/HumanSignal/label-studio-sdk.git
13
13
  > cd label-studio-sdk
14
- > git checkout previous-version
14
+ > git fetch origin
15
+ > git checkout release/0.0.34
15
16
  > ```
16
17
  >
17
18
  > OR you can change your import statements as follows:
18
19
  > ```python
19
- > from label_studio_sdk import Client
20
+ > from label_studio_sdk._legacy import Client
20
21
  > from label_studio_sdk.data_manager import Filters, Column, Operator, Type
21
22
  > from label_studio_sdk._legacy import Project
22
23
  > ```
@@ -61,18 +62,16 @@ Check more examples [here](https://api.labelstud.io/).
61
62
  ## Create a new project
62
63
 
63
64
  ```python
65
+ from label_studio_sdk.label_interface import LabelInterface
66
+ from label_studio_sdk.label_interface.create import labels
67
+
64
68
  project = ls.projects.create(
65
69
  name="Project name",
66
70
  description="Project description",
67
- label_config="""
68
- <View>
69
- <Image name="image" value="$image" />
70
- <RectangleLabels name="label" toName="image">
71
- <Label value="cat" />
72
- <Label value="dog" />
73
- </RectangleLabels>
74
- </View>
75
- """
71
+ label_config=LabelInterface.create({
72
+ "image": "Image",
73
+ "bbox": labels(["cat", "dog"], tag_type="RectangleLabels")
74
+ })
76
75
  )
77
76
  ```
78
77
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "label-studio-sdk"
3
- version = "1.0.2"
3
+ version = "1.0.4"
4
4
  description = ""
5
5
  readme = "README.md"
6
6
  authors = []
@@ -11,10 +11,13 @@ from .types import (
11
11
  AzureBlobImportStorage,
12
12
  AzureBlobImportStorageStatus,
13
13
  BaseTask,
14
+ BaseTaskFileUpload,
15
+ BaseTaskUpdatedBy,
14
16
  BaseUser,
15
17
  ConvertedFormat,
16
18
  ConvertedFormatStatus,
17
19
  DataManagerTaskSerializer,
20
+ DataManagerTaskSerializerAnnotatorsItem,
18
21
  DataManagerTaskSerializerDraftsItem,
19
22
  DataManagerTaskSerializerPredictionsItem,
20
23
  Export,
@@ -51,9 +54,13 @@ from .types import (
51
54
  S3ExportStorageStatus,
52
55
  S3ImportStorage,
53
56
  S3ImportStorageStatus,
57
+ S3SExportStorage,
58
+ S3SImportStorage,
59
+ S3SImportStorageStatus,
54
60
  SerializationOption,
55
61
  SerializationOptions,
56
62
  Task,
63
+ TaskAnnotatorsItem,
57
64
  TaskFilterOptions,
58
65
  UserSimple,
59
66
  View,
@@ -61,6 +68,7 @@ from .types import (
61
68
  WebhookActionsItem,
62
69
  WebhookSerializerForUpdate,
63
70
  WebhookSerializerForUpdateActionsItem,
71
+ Workspace,
64
72
  )
65
73
  from .errors import BadRequestError, InternalServerError
66
74
  from . import (
@@ -76,6 +84,7 @@ from . import (
76
84
  users,
77
85
  views,
78
86
  webhooks,
87
+ workspaces,
79
88
  )
80
89
  from ._legacy import Client
81
90
  from .actions import (
@@ -102,7 +111,7 @@ from .ml import (
102
111
  MlUpdateResponse,
103
112
  MlUpdateResponseAuthMethod,
104
113
  )
105
- from .projects import ProjectsCreateResponse, ProjectsImportTasksResponse, ProjectsListResponse
114
+ from .projects import ProjectsCreateResponse, ProjectsImportTasksResponse, ProjectsListResponse, ProjectsUpdateResponse
106
115
  from .tasks import TasksListRequestFields, TasksListResponse
107
116
  from .users import UsersGetTokenResponse, UsersResetTokenResponse
108
117
  from .version import __version__
@@ -149,11 +158,14 @@ __all__ = [
149
158
  "AzureBlobImportStorageStatus",
150
159
  "BadRequestError",
151
160
  "BaseTask",
161
+ "BaseTaskFileUpload",
162
+ "BaseTaskUpdatedBy",
152
163
  "BaseUser",
153
164
  "Client",
154
165
  "ConvertedFormat",
155
166
  "ConvertedFormatStatus",
156
167
  "DataManagerTaskSerializer",
168
+ "DataManagerTaskSerializerAnnotatorsItem",
157
169
  "DataManagerTaskSerializerDraftsItem",
158
170
  "DataManagerTaskSerializerPredictionsItem",
159
171
  "Export",
@@ -195,6 +207,7 @@ __all__ = [
195
207
  "ProjectsCreateResponse",
196
208
  "ProjectsImportTasksResponse",
197
209
  "ProjectsListResponse",
210
+ "ProjectsUpdateResponse",
198
211
  "RedisExportStorage",
199
212
  "RedisExportStorageStatus",
200
213
  "RedisImportStorage",
@@ -203,9 +216,13 @@ __all__ = [
203
216
  "S3ExportStorageStatus",
204
217
  "S3ImportStorage",
205
218
  "S3ImportStorageStatus",
219
+ "S3SExportStorage",
220
+ "S3SImportStorage",
221
+ "S3SImportStorageStatus",
206
222
  "SerializationOption",
207
223
  "SerializationOptions",
208
224
  "Task",
225
+ "TaskAnnotatorsItem",
209
226
  "TaskFilterOptions",
210
227
  "TasksListRequestFields",
211
228
  "TasksListResponse",
@@ -234,6 +251,7 @@ __all__ = [
234
251
  "WebhookSerializerForUpdate",
235
252
  "WebhookSerializerForUpdateActionsItem",
236
253
  "WebhooksUpdateRequestActionsItem",
254
+ "Workspace",
237
255
  "__version__",
238
256
  "actions",
239
257
  "annotations",
@@ -247,4 +265,5 @@ __all__ = [
247
265
  "users",
248
266
  "views",
249
267
  "webhooks",
268
+ "workspaces",
250
269
  ]
@@ -44,9 +44,9 @@ class ActionsClient:
44
44
  _response = self._client_wrapper.httpx_client.request(
45
45
  "api/dm/actions/", method="GET", request_options=request_options
46
46
  )
47
- if 200 <= _response.status_code < 300:
48
- return
49
47
  try:
48
+ if 200 <= _response.status_code < 300:
49
+ return
50
50
  _response_json = _response.json()
51
51
  except JSONDecodeError:
52
52
  raise ApiError(status_code=_response.status_code, body=_response.text)
@@ -134,9 +134,9 @@ class ActionsClient:
134
134
  request_options=request_options,
135
135
  omit=OMIT,
136
136
  )
137
- if 200 <= _response.status_code < 300:
138
- return
139
137
  try:
138
+ if 200 <= _response.status_code < 300:
139
+ return
140
140
  _response_json = _response.json()
141
141
  except JSONDecodeError:
142
142
  raise ApiError(status_code=_response.status_code, body=_response.text)
@@ -172,9 +172,9 @@ class AsyncActionsClient:
172
172
  _response = await self._client_wrapper.httpx_client.request(
173
173
  "api/dm/actions/", method="GET", request_options=request_options
174
174
  )
175
- if 200 <= _response.status_code < 300:
176
- return
177
175
  try:
176
+ if 200 <= _response.status_code < 300:
177
+ return
178
178
  _response_json = _response.json()
179
179
  except JSONDecodeError:
180
180
  raise ApiError(status_code=_response.status_code, body=_response.text)
@@ -262,9 +262,9 @@ class AsyncActionsClient:
262
262
  request_options=request_options,
263
263
  omit=OMIT,
264
264
  )
265
- if 200 <= _response.status_code < 300:
266
- return
267
265
  try:
266
+ if 200 <= _response.status_code < 300:
267
+ return
268
268
  _response_json = _response.json()
269
269
  except JSONDecodeError:
270
270
  raise ApiError(status_code=_response.status_code, body=_response.text)
@@ -51,9 +51,9 @@ class AnnotationsClient:
51
51
  _response = self._client_wrapper.httpx_client.request(
52
52
  f"api/annotations/{jsonable_encoder(id)}/", method="GET", request_options=request_options
53
53
  )
54
- if 200 <= _response.status_code < 300:
55
- return pydantic_v1.parse_obj_as(Annotation, _response.json()) # type: ignore
56
54
  try:
55
+ if 200 <= _response.status_code < 300:
56
+ return pydantic_v1.parse_obj_as(Annotation, _response.json()) # type: ignore
57
57
  _response_json = _response.json()
58
58
  except JSONDecodeError:
59
59
  raise ApiError(status_code=_response.status_code, body=_response.text)
@@ -93,9 +93,9 @@ class AnnotationsClient:
93
93
  _response = self._client_wrapper.httpx_client.request(
94
94
  f"api/annotations/{jsonable_encoder(id)}/", method="DELETE", request_options=request_options
95
95
  )
96
- if 200 <= _response.status_code < 300:
97
- return
98
96
  try:
97
+ if 200 <= _response.status_code < 300:
98
+ return
99
99
  _response_json = _response.json()
100
100
  except JSONDecodeError:
101
101
  raise ApiError(status_code=_response.status_code, body=_response.text)
@@ -182,7 +182,7 @@ class AnnotationsClient:
182
182
  "width": 50,
183
183
  "height": 60,
184
184
  "rotation": 0,
185
- "values": {"rectanglelabels": {"0": "Person"}},
185
+ "values": {"rectanglelabels": ["Person"]},
186
186
  },
187
187
  }
188
188
  ],
@@ -206,9 +206,9 @@ class AnnotationsClient:
206
206
  request_options=request_options,
207
207
  omit=OMIT,
208
208
  )
209
- if 200 <= _response.status_code < 300:
210
- return pydantic_v1.parse_obj_as(Annotation, _response.json()) # type: ignore
211
209
  try:
210
+ if 200 <= _response.status_code < 300:
211
+ return pydantic_v1.parse_obj_as(Annotation, _response.json()) # type: ignore
212
212
  _response_json = _response.json()
213
213
  except JSONDecodeError:
214
214
  raise ApiError(status_code=_response.status_code, body=_response.text)
@@ -247,9 +247,9 @@ class AnnotationsClient:
247
247
  _response = self._client_wrapper.httpx_client.request(
248
248
  f"api/tasks/{jsonable_encoder(id)}/annotations/", method="GET", request_options=request_options
249
249
  )
250
- if 200 <= _response.status_code < 300:
251
- return pydantic_v1.parse_obj_as(typing.List[Annotation], _response.json()) # type: ignore
252
250
  try:
251
+ if 200 <= _response.status_code < 300:
252
+ return pydantic_v1.parse_obj_as(typing.List[Annotation], _response.json()) # type: ignore
253
253
  _response_json = _response.json()
254
254
  except JSONDecodeError:
255
255
  raise ApiError(status_code=_response.status_code, body=_response.text)
@@ -348,7 +348,7 @@ class AnnotationsClient:
348
348
  "width": 50,
349
349
  "height": 60,
350
350
  "rotation": 0,
351
- "values": {"rectanglelabels": {"0": "Person"}},
351
+ "values": {"rectanglelabels": ["Person"]},
352
352
  },
353
353
  }
354
354
  ],
@@ -372,9 +372,9 @@ class AnnotationsClient:
372
372
  request_options=request_options,
373
373
  omit=OMIT,
374
374
  )
375
- if 200 <= _response.status_code < 300:
376
- return pydantic_v1.parse_obj_as(Annotation, _response.json()) # type: ignore
377
375
  try:
376
+ if 200 <= _response.status_code < 300:
377
+ return pydantic_v1.parse_obj_as(Annotation, _response.json()) # type: ignore
378
378
  _response_json = _response.json()
379
379
  except JSONDecodeError:
380
380
  raise ApiError(status_code=_response.status_code, body=_response.text)
@@ -418,9 +418,9 @@ class AsyncAnnotationsClient:
418
418
  _response = await self._client_wrapper.httpx_client.request(
419
419
  f"api/annotations/{jsonable_encoder(id)}/", method="GET", request_options=request_options
420
420
  )
421
- if 200 <= _response.status_code < 300:
422
- return pydantic_v1.parse_obj_as(Annotation, _response.json()) # type: ignore
423
421
  try:
422
+ if 200 <= _response.status_code < 300:
423
+ return pydantic_v1.parse_obj_as(Annotation, _response.json()) # type: ignore
424
424
  _response_json = _response.json()
425
425
  except JSONDecodeError:
426
426
  raise ApiError(status_code=_response.status_code, body=_response.text)
@@ -460,9 +460,9 @@ class AsyncAnnotationsClient:
460
460
  _response = await self._client_wrapper.httpx_client.request(
461
461
  f"api/annotations/{jsonable_encoder(id)}/", method="DELETE", request_options=request_options
462
462
  )
463
- if 200 <= _response.status_code < 300:
464
- return
465
463
  try:
464
+ if 200 <= _response.status_code < 300:
465
+ return
466
466
  _response_json = _response.json()
467
467
  except JSONDecodeError:
468
468
  raise ApiError(status_code=_response.status_code, body=_response.text)
@@ -549,7 +549,7 @@ class AsyncAnnotationsClient:
549
549
  "width": 50,
550
550
  "height": 60,
551
551
  "rotation": 0,
552
- "values": {"rectanglelabels": {"0": "Person"}},
552
+ "values": {"rectanglelabels": ["Person"]},
553
553
  },
554
554
  }
555
555
  ],
@@ -573,9 +573,9 @@ class AsyncAnnotationsClient:
573
573
  request_options=request_options,
574
574
  omit=OMIT,
575
575
  )
576
- if 200 <= _response.status_code < 300:
577
- return pydantic_v1.parse_obj_as(Annotation, _response.json()) # type: ignore
578
576
  try:
577
+ if 200 <= _response.status_code < 300:
578
+ return pydantic_v1.parse_obj_as(Annotation, _response.json()) # type: ignore
579
579
  _response_json = _response.json()
580
580
  except JSONDecodeError:
581
581
  raise ApiError(status_code=_response.status_code, body=_response.text)
@@ -616,9 +616,9 @@ class AsyncAnnotationsClient:
616
616
  _response = await self._client_wrapper.httpx_client.request(
617
617
  f"api/tasks/{jsonable_encoder(id)}/annotations/", method="GET", request_options=request_options
618
618
  )
619
- if 200 <= _response.status_code < 300:
620
- return pydantic_v1.parse_obj_as(typing.List[Annotation], _response.json()) # type: ignore
621
619
  try:
620
+ if 200 <= _response.status_code < 300:
621
+ return pydantic_v1.parse_obj_as(typing.List[Annotation], _response.json()) # type: ignore
622
622
  _response_json = _response.json()
623
623
  except JSONDecodeError:
624
624
  raise ApiError(status_code=_response.status_code, body=_response.text)
@@ -717,7 +717,7 @@ class AsyncAnnotationsClient:
717
717
  "width": 50,
718
718
  "height": 60,
719
719
  "rotation": 0,
720
- "values": {"rectanglelabels": {"0": "Person"}},
720
+ "values": {"rectanglelabels": ["Person"]},
721
721
  },
722
722
  }
723
723
  ],
@@ -741,9 +741,9 @@ class AsyncAnnotationsClient:
741
741
  request_options=request_options,
742
742
  omit=OMIT,
743
743
  )
744
- if 200 <= _response.status_code < 300:
745
- return pydantic_v1.parse_obj_as(Annotation, _response.json()) # type: ignore
746
744
  try:
745
+ if 200 <= _response.status_code < 300:
746
+ return pydantic_v1.parse_obj_as(Annotation, _response.json()) # type: ignore
747
747
  _response_json = _response.json()
748
748
  except JSONDecodeError:
749
749
  raise ApiError(status_code=_response.status_code, body=_response.text)
@@ -20,6 +20,7 @@ from .tasks.client import AsyncTasksClient, TasksClient
20
20
  from .users.client import AsyncUsersClient, UsersClient
21
21
  from .views.client import AsyncViewsClient, ViewsClient
22
22
  from .webhooks.client import AsyncWebhooksClient, WebhooksClient
23
+ from .workspaces.client import AsyncWorkspacesClient, WorkspacesClient
23
24
 
24
25
 
25
26
  class LabelStudioBase:
@@ -96,6 +97,7 @@ class LabelStudioBase:
96
97
  self.import_storage = ImportStorageClient(client_wrapper=self._client_wrapper)
97
98
  self.export_storage = ExportStorageClient(client_wrapper=self._client_wrapper)
98
99
  self.webhooks = WebhooksClient(client_wrapper=self._client_wrapper)
100
+ self.workspaces = WorkspacesClient(client_wrapper=self._client_wrapper)
99
101
 
100
102
 
101
103
  class AsyncLabelStudioBase:
@@ -172,6 +174,7 @@ class AsyncLabelStudioBase:
172
174
  self.import_storage = AsyncImportStorageClient(client_wrapper=self._client_wrapper)
173
175
  self.export_storage = AsyncExportStorageClient(client_wrapper=self._client_wrapper)
174
176
  self.webhooks = AsyncWebhooksClient(client_wrapper=self._client_wrapper)
177
+ self.workspaces = AsyncWorkspacesClient(client_wrapper=self._client_wrapper)
175
178
 
176
179
 
177
180
  def _get_base_url(*, base_url: typing.Optional[str] = None, environment: LabelStudioEnvironment) -> str:
@@ -17,7 +17,7 @@ class BaseClientWrapper:
17
17
  headers: typing.Dict[str, str] = {
18
18
  "X-Fern-Language": "Python",
19
19
  "X-Fern-SDK-Name": "label-studio-sdk",
20
- "X-Fern-SDK-Version": "1.0.2",
20
+ "X-Fern-SDK-Version": "1.0.4",
21
21
  }
22
22
  headers["Authorization"] = f"Token {self.api_key}"
23
23
  return headers
@@ -2,6 +2,7 @@
2
2
 
3
3
  import asyncio
4
4
  import email.utils
5
+ import json
5
6
  import re
6
7
  import time
7
8
  import typing
@@ -125,6 +126,25 @@ def maybe_filter_request_body(
125
126
  return data_content
126
127
 
127
128
 
129
+ # Abstracted out for testing purposes
130
+ def get_request_body(
131
+ *,
132
+ json: typing.Optional[typing.Any],
133
+ data: typing.Optional[typing.Any],
134
+ request_options: typing.Optional[RequestOptions],
135
+ omit: typing.Optional[typing.Any],
136
+ ) -> typing.Tuple[typing.Optional[typing.Any], typing.Optional[typing.Any]]:
137
+ json_body = None
138
+ data_body = None
139
+ if data is not None:
140
+ data_body = maybe_filter_request_body(data, request_options, omit)
141
+ else:
142
+ # If both data and json are None, we send json data in the event extra properties are specified
143
+ json_body = maybe_filter_request_body(json, request_options, omit)
144
+
145
+ return json_body, data_body
146
+
147
+
128
148
  class HttpClient:
129
149
  def __init__(
130
150
  self,
@@ -168,6 +188,8 @@ class HttpClient:
168
188
  else self.base_timeout
169
189
  )
170
190
 
191
+ json_body, data_body = get_request_body(json=json, data=data, request_options=request_options, omit=omit)
192
+
171
193
  response = self.httpx_client.request(
172
194
  method=method,
173
195
  url=urllib.parse.urljoin(f"{base_url}/", path),
@@ -197,8 +219,8 @@ class HttpClient:
197
219
  )
198
220
  )
199
221
  ),
200
- json=maybe_filter_request_body(json, request_options, omit),
201
- data=maybe_filter_request_body(data, request_options, omit),
222
+ json=json_body,
223
+ data=data_body,
202
224
  content=content,
203
225
  files=convert_file_dict_to_httpx_tuples(remove_none_from_dict(files)) if files is not None else None,
204
226
  timeout=timeout,
@@ -248,6 +270,8 @@ class HttpClient:
248
270
  else self.base_timeout
249
271
  )
250
272
 
273
+ json_body, data_body = get_request_body(json=json, data=data, request_options=request_options, omit=omit)
274
+
251
275
  with self.httpx_client.stream(
252
276
  method=method,
253
277
  url=urllib.parse.urljoin(f"{base_url}/", path),
@@ -277,8 +301,8 @@ class HttpClient:
277
301
  )
278
302
  )
279
303
  ),
280
- json=maybe_filter_request_body(json, request_options, omit),
281
- data=maybe_filter_request_body(data, request_options, omit),
304
+ json=json_body,
305
+ data=data_body,
282
306
  content=content,
283
307
  files=convert_file_dict_to_httpx_tuples(remove_none_from_dict(files)) if files is not None else None,
284
308
  timeout=timeout,
@@ -329,6 +353,8 @@ class AsyncHttpClient:
329
353
  else self.base_timeout
330
354
  )
331
355
 
356
+ json_body, data_body = get_request_body(json=json, data=data, request_options=request_options, omit=omit)
357
+
332
358
  # Add the input to each of these and do None-safety checks
333
359
  response = await self.httpx_client.request(
334
360
  method=method,
@@ -359,8 +385,8 @@ class AsyncHttpClient:
359
385
  )
360
386
  )
361
387
  ),
362
- json=maybe_filter_request_body(json, request_options, omit),
363
- data=maybe_filter_request_body(data, request_options, omit),
388
+ json=json_body,
389
+ data=data_body,
364
390
  content=content,
365
391
  files=convert_file_dict_to_httpx_tuples(remove_none_from_dict(files)) if files is not None else None,
366
392
  timeout=timeout,
@@ -409,6 +435,8 @@ class AsyncHttpClient:
409
435
  else self.base_timeout
410
436
  )
411
437
 
438
+ json_body, data_body = get_request_body(json=json, data=data, request_options=request_options, omit=omit)
439
+
412
440
  async with self.httpx_client.stream(
413
441
  method=method,
414
442
  url=urllib.parse.urljoin(f"{base_url}/", path),
@@ -438,8 +466,8 @@ class AsyncHttpClient:
438
466
  )
439
467
  )
440
468
  ),
441
- json=maybe_filter_request_body(json, request_options, omit),
442
- data=maybe_filter_request_body(data, request_options, omit),
469
+ json=json_body,
470
+ data=data_body,
443
471
  content=content,
444
472
  files=convert_file_dict_to_httpx_tuples(remove_none_from_dict(files)) if files is not None else None,
445
473
  timeout=timeout,
@@ -5,10 +5,10 @@ import typing
5
5
  try:
6
6
  from typing import NotRequired # type: ignore
7
7
  except ImportError:
8
- from typing_extensions import NotRequired # type: ignore
8
+ from typing_extensions import NotRequired
9
9
 
10
10
 
11
- class RequestOptions(typing.TypedDict):
11
+ class RequestOptions(typing.TypedDict, total=False):
12
12
  """
13
13
  Additional options for request-specific configuration when calling APIs via the SDK.
14
14
  This is used primarily as an optional final parameter for service functions.
@@ -1,7 +1,7 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
3
  from .types import ExportStorageListTypesResponseItem
4
- from . import azure, gcs, local, redis, s3
4
+ from . import azure, gcs, local, redis, s3, s3s
5
5
  from .azure import AzureCreateResponse, AzureUpdateResponse
6
6
  from .gcs import GcsCreateResponse, GcsUpdateResponse
7
7
  from .local import LocalCreateResponse, LocalUpdateResponse
@@ -25,4 +25,5 @@ __all__ = [
25
25
  "local",
26
26
  "redis",
27
27
  "s3",
28
+ "s3s",
28
29
  ]