label-studio-sdk 1.0.18__tar.gz → 1.0.20__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.
Files changed (374) hide show
  1. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/PKG-INFO +3 -2
  2. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/pyproject.toml +3 -2
  3. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/__init__.py +8 -1
  4. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/_extensions/label_studio_tools/core/label_config.py +1 -1
  5. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/converter/converter.py +48 -22
  6. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/files/client.py +2 -2
  7. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/projects/__init__.py +8 -1
  8. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/projects/client.py +102 -81
  9. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/projects/exports/client.py +2 -2
  10. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/projects/exports/client_ext.py +2 -2
  11. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/projects/types/__init__.py +8 -1
  12. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/projects/types/projects_create_response.py +1 -1
  13. label_studio_sdk-1.0.20/src/label_studio_sdk/projects/types/projects_list_request_filter.py +5 -0
  14. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/projects/types/projects_update_response.py +1 -1
  15. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/tokens/client_ext.py +0 -1
  16. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/project.py +1 -1
  17. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/LICENSE +0 -0
  18. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/README.md +0 -0
  19. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/_extensions/__init__.py +0 -0
  20. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/_extensions/eval/categorical.py +0 -0
  21. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/_extensions/label_studio_tools/__init__.py +0 -0
  22. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/_extensions/label_studio_tools/core/__init__.py +0 -0
  23. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/_extensions/label_studio_tools/core/utils/__init__.py +0 -0
  24. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/_extensions/label_studio_tools/core/utils/exceptions.py +0 -0
  25. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/_extensions/label_studio_tools/core/utils/io.py +0 -0
  26. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/_extensions/label_studio_tools/core/utils/json_schema.py +0 -0
  27. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/_extensions/label_studio_tools/core/utils/params.py +0 -0
  28. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/_extensions/label_studio_tools/etl/__init__.py +0 -0
  29. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/_extensions/label_studio_tools/etl/beam.py +0 -0
  30. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/_extensions/label_studio_tools/etl/example.py +0 -0
  31. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/_extensions/label_studio_tools/etl/registry.py +0 -0
  32. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/_extensions/label_studio_tools/postprocessing/__init__.py +0 -0
  33. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/_extensions/label_studio_tools/postprocessing/video.py +0 -0
  34. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/_extensions/pager_ext.py +0 -0
  35. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/_legacy/__init__.py +0 -0
  36. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/_legacy/client.py +0 -0
  37. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/_legacy/exceptions.py +0 -0
  38. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/_legacy/project.py +0 -0
  39. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/_legacy/schema/label_config_schema.json +0 -0
  40. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/_legacy/users.py +0 -0
  41. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/_legacy/utils.py +0 -0
  42. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/_legacy/workspaces.py +0 -0
  43. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/actions/__init__.py +0 -0
  44. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/actions/client.py +0 -0
  45. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/actions/types/__init__.py +0 -0
  46. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/actions/types/actions_create_request_filters.py +0 -0
  47. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/actions/types/actions_create_request_filters_conjunction.py +0 -0
  48. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/actions/types/actions_create_request_filters_items_item.py +0 -0
  49. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/actions/types/actions_create_request_filters_items_item_filter.py +0 -0
  50. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/actions/types/actions_create_request_filters_items_item_operator.py +0 -0
  51. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/actions/types/actions_create_request_filters_items_item_value.py +0 -0
  52. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/actions/types/actions_create_request_id.py +0 -0
  53. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/actions/types/actions_create_request_ordering_item.py +0 -0
  54. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/actions/types/actions_create_request_selected_items.py +0 -0
  55. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/actions/types/actions_create_request_selected_items_excluded.py +0 -0
  56. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/actions/types/actions_create_request_selected_items_included.py +0 -0
  57. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/annotations/__init__.py +0 -0
  58. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/annotations/client.py +0 -0
  59. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/annotations/types/__init__.py +0 -0
  60. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/annotations/types/annotations_create_bulk_request_selected_items.py +0 -0
  61. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/annotations/types/annotations_create_bulk_response_item.py +0 -0
  62. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/base_client.py +0 -0
  63. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/client.py +0 -0
  64. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/comments/__init__.py +0 -0
  65. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/comments/client.py +0 -0
  66. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/converter/README.md +0 -0
  67. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/converter/__init__.py +0 -0
  68. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/converter/audio.py +0 -0
  69. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/converter/brush.py +0 -0
  70. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/converter/exports/__init__.py +0 -0
  71. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/converter/exports/brush_to_coco.py +0 -0
  72. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/converter/exports/csv.py +0 -0
  73. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/converter/exports/csv2.py +0 -0
  74. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/converter/exports/yolo.py +0 -0
  75. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/converter/funsd.py +0 -0
  76. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/converter/imports/__init__.py +0 -0
  77. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/converter/imports/coco.py +0 -0
  78. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/converter/imports/colors.py +0 -0
  79. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/converter/imports/label_config.py +0 -0
  80. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/converter/imports/pathtrack.py +0 -0
  81. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/converter/imports/yolo.py +0 -0
  82. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/converter/keypoints.py +0 -0
  83. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/converter/main.py +0 -0
  84. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/converter/utils.py +0 -0
  85. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/core/__init__.py +0 -0
  86. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/core/api_error.py +0 -0
  87. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/core/client_wrapper.py +0 -0
  88. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/core/datetime_utils.py +0 -0
  89. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/core/file.py +0 -0
  90. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/core/http_client.py +0 -0
  91. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/core/jsonable_encoder.py +0 -0
  92. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/core/pagination.py +0 -0
  93. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/core/pydantic_utilities.py +0 -0
  94. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/core/query_encoder.py +0 -0
  95. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/core/remove_none_from_dict.py +0 -0
  96. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/core/request_options.py +0 -0
  97. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/core/serialization.py +0 -0
  98. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/data_manager.py +0 -0
  99. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/environment.py +0 -0
  100. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/errors/__init__.py +0 -0
  101. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/errors/bad_request_error.py +0 -0
  102. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/errors/internal_server_error.py +0 -0
  103. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/errors/not_found_error.py +0 -0
  104. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/errors/unauthorized_error.py +0 -0
  105. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/export_storage/__init__.py +0 -0
  106. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/export_storage/azure/__init__.py +0 -0
  107. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/export_storage/azure/client.py +0 -0
  108. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/export_storage/azure/types/__init__.py +0 -0
  109. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/export_storage/azure/types/azure_create_response.py +0 -0
  110. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/export_storage/azure/types/azure_update_response.py +0 -0
  111. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/export_storage/client.py +0 -0
  112. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/export_storage/gcs/__init__.py +0 -0
  113. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/export_storage/gcs/client.py +0 -0
  114. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/export_storage/gcs/types/__init__.py +0 -0
  115. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/export_storage/gcs/types/gcs_create_response.py +0 -0
  116. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/export_storage/gcs/types/gcs_update_response.py +0 -0
  117. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/export_storage/local/__init__.py +0 -0
  118. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/export_storage/local/client.py +0 -0
  119. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/export_storage/local/types/__init__.py +0 -0
  120. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/export_storage/local/types/local_create_response.py +0 -0
  121. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/export_storage/local/types/local_update_response.py +0 -0
  122. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/export_storage/redis/__init__.py +0 -0
  123. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/export_storage/redis/client.py +0 -0
  124. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/export_storage/redis/types/__init__.py +0 -0
  125. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/export_storage/redis/types/redis_create_response.py +0 -0
  126. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/export_storage/redis/types/redis_update_response.py +0 -0
  127. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/export_storage/s3/__init__.py +0 -0
  128. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/export_storage/s3/client.py +0 -0
  129. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/export_storage/s3/types/__init__.py +0 -0
  130. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/export_storage/s3/types/s3create_response.py +0 -0
  131. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/export_storage/s3/types/s3update_response.py +0 -0
  132. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/export_storage/s3s/__init__.py +0 -0
  133. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/export_storage/s3s/client.py +0 -0
  134. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/export_storage/types/__init__.py +0 -0
  135. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/export_storage/types/export_storage_list_types_response_item.py +0 -0
  136. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/files/__init__.py +0 -0
  137. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/import_storage/__init__.py +0 -0
  138. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/import_storage/azure/__init__.py +0 -0
  139. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/import_storage/azure/client.py +0 -0
  140. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/import_storage/azure/types/__init__.py +0 -0
  141. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/import_storage/azure/types/azure_create_response.py +0 -0
  142. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/import_storage/azure/types/azure_update_response.py +0 -0
  143. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/import_storage/client.py +0 -0
  144. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/import_storage/gcs/__init__.py +0 -0
  145. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/import_storage/gcs/client.py +0 -0
  146. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/import_storage/gcs/types/__init__.py +0 -0
  147. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/import_storage/gcs/types/gcs_create_response.py +0 -0
  148. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/import_storage/gcs/types/gcs_update_response.py +0 -0
  149. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/import_storage/local/__init__.py +0 -0
  150. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/import_storage/local/client.py +0 -0
  151. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/import_storage/local/types/__init__.py +0 -0
  152. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/import_storage/local/types/local_create_response.py +0 -0
  153. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/import_storage/local/types/local_update_response.py +0 -0
  154. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/import_storage/redis/__init__.py +0 -0
  155. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/import_storage/redis/client.py +0 -0
  156. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/import_storage/redis/types/__init__.py +0 -0
  157. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/import_storage/redis/types/redis_create_response.py +0 -0
  158. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/import_storage/redis/types/redis_update_response.py +0 -0
  159. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/import_storage/s3/__init__.py +0 -0
  160. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/import_storage/s3/client.py +0 -0
  161. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/import_storage/s3/types/__init__.py +0 -0
  162. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/import_storage/s3/types/s3create_response.py +0 -0
  163. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/import_storage/s3/types/s3update_response.py +0 -0
  164. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/import_storage/s3s/__init__.py +0 -0
  165. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/import_storage/s3s/client.py +0 -0
  166. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/import_storage/types/__init__.py +0 -0
  167. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/import_storage/types/import_storage_list_types_response_item.py +0 -0
  168. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/jwt_settings/__init__.py +0 -0
  169. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/jwt_settings/client.py +0 -0
  170. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/label_interface/__init__.py +0 -0
  171. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/label_interface/base.py +0 -0
  172. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/label_interface/control_tags.py +0 -0
  173. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/label_interface/create.py +0 -0
  174. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/label_interface/data_examples.json +0 -0
  175. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/label_interface/interface.py +0 -0
  176. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/label_interface/label_tags.py +0 -0
  177. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/label_interface/object_tags.py +0 -0
  178. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/label_interface/objects.py +0 -0
  179. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/label_interface/region.py +0 -0
  180. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/ml/__init__.py +0 -0
  181. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/ml/client.py +0 -0
  182. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/ml/types/__init__.py +0 -0
  183. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/ml/types/ml_create_request_auth_method.py +0 -0
  184. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/ml/types/ml_create_response.py +0 -0
  185. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/ml/types/ml_create_response_auth_method.py +0 -0
  186. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/ml/types/ml_update_request_auth_method.py +0 -0
  187. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/ml/types/ml_update_response.py +0 -0
  188. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/ml/types/ml_update_response_auth_method.py +0 -0
  189. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/model_providers/__init__.py +0 -0
  190. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/model_providers/client.py +0 -0
  191. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/predictions/__init__.py +0 -0
  192. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/predictions/client.py +0 -0
  193. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/projects/client_ext.py +0 -0
  194. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/projects/exports/__init__.py +0 -0
  195. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/projects/exports/types/__init__.py +0 -0
  196. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/projects/exports/types/exports_convert_response.py +0 -0
  197. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/projects/exports/types/exports_list_formats_response_item.py +0 -0
  198. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/projects/pauses/__init__.py +0 -0
  199. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/projects/pauses/client.py +0 -0
  200. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/projects/types/projects_import_tasks_response.py +0 -0
  201. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/projects/types/projects_list_response.py +0 -0
  202. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/prompts/__init__.py +0 -0
  203. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/prompts/client.py +0 -0
  204. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/prompts/indicators/__init__.py +0 -0
  205. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/prompts/indicators/client.py +0 -0
  206. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/prompts/runs/__init__.py +0 -0
  207. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/prompts/runs/client.py +0 -0
  208. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/prompts/runs/types/__init__.py +0 -0
  209. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/prompts/runs/types/runs_list_request_project_subset.py +0 -0
  210. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/prompts/types/__init__.py +0 -0
  211. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/prompts/types/prompts_batch_failed_predictions_request_failed_predictions_item.py +0 -0
  212. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/prompts/types/prompts_batch_failed_predictions_response.py +0 -0
  213. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/prompts/types/prompts_batch_predictions_request_results_item.py +0 -0
  214. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/prompts/types/prompts_batch_predictions_response.py +0 -0
  215. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/prompts/versions/__init__.py +0 -0
  216. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/prompts/versions/client.py +0 -0
  217. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/py.typed +0 -0
  218. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/tasks/__init__.py +0 -0
  219. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/tasks/client.py +0 -0
  220. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/tasks/client_ext.py +0 -0
  221. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/tasks/types/__init__.py +0 -0
  222. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/tasks/types/tasks_list_request_fields.py +0 -0
  223. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/tasks/types/tasks_list_response.py +0 -0
  224. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/tokens/__init__.py +0 -0
  225. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/tokens/client.py +0 -0
  226. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/__init__.py +0 -0
  227. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/access_token_response.py +0 -0
  228. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/annotation.py +0 -0
  229. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/annotation_completed_by.py +0 -0
  230. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/annotation_filter_options.py +0 -0
  231. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/annotation_last_action.py +0 -0
  232. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/annotations_dm_field.py +0 -0
  233. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/annotations_dm_field_last_action.py +0 -0
  234. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/api_token_response.py +0 -0
  235. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/azure_blob_export_storage.py +0 -0
  236. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/azure_blob_export_storage_status.py +0 -0
  237. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/azure_blob_import_storage.py +0 -0
  238. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/azure_blob_import_storage_status.py +0 -0
  239. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/base_task.py +0 -0
  240. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/base_task_file_upload.py +0 -0
  241. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/base_task_updated_by.py +0 -0
  242. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/base_user.py +0 -0
  243. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/comment.py +0 -0
  244. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/comment_created_by.py +0 -0
  245. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/converted_format.py +0 -0
  246. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/converted_format_status.py +0 -0
  247. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/data_manager_task_serializer.py +0 -0
  248. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/data_manager_task_serializer_annotators_item.py +0 -0
  249. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/data_manager_task_serializer_comment_authors_item.py +0 -0
  250. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/data_manager_task_serializer_drafts_item.py +0 -0
  251. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/data_manager_task_serializer_predictions_item.py +0 -0
  252. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/data_manager_task_serializer_predictions_item_model_run.py +0 -0
  253. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/export.py +0 -0
  254. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/export_format.py +0 -0
  255. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/export_snapshot.py +0 -0
  256. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/export_snapshot_status.py +0 -0
  257. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/export_status.py +0 -0
  258. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/file_upload.py +0 -0
  259. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/filter.py +0 -0
  260. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/filter_group.py +0 -0
  261. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/gcs_export_storage.py +0 -0
  262. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/gcs_export_storage_status.py +0 -0
  263. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/gcs_import_storage.py +0 -0
  264. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/gcs_import_storage_status.py +0 -0
  265. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/inference_run.py +0 -0
  266. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/inference_run_cost_estimate.py +0 -0
  267. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/inference_run_created_by.py +0 -0
  268. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/inference_run_organization.py +0 -0
  269. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/inference_run_project_subset.py +0 -0
  270. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/inference_run_status.py +0 -0
  271. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/jwt_settings_response.py +0 -0
  272. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/key_indicator_value.py +0 -0
  273. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/key_indicators.py +0 -0
  274. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/key_indicators_item.py +0 -0
  275. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/key_indicators_item_additional_kpis_item.py +0 -0
  276. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/key_indicators_item_extra_kpis_item.py +0 -0
  277. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/local_files_export_storage.py +0 -0
  278. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/local_files_export_storage_status.py +0 -0
  279. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/local_files_import_storage.py +0 -0
  280. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/local_files_import_storage_status.py +0 -0
  281. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/ml_backend.py +0 -0
  282. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/ml_backend_auth_method.py +0 -0
  283. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/ml_backend_state.py +0 -0
  284. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/model_provider_connection.py +0 -0
  285. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/model_provider_connection_budget_reset_period.py +0 -0
  286. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/model_provider_connection_created_by.py +0 -0
  287. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/model_provider_connection_organization.py +0 -0
  288. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/model_provider_connection_provider.py +0 -0
  289. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/model_provider_connection_scope.py +0 -0
  290. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/pause.py +0 -0
  291. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/pause_paused_by.py +0 -0
  292. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/prediction.py +0 -0
  293. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/project_import.py +0 -0
  294. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/project_import_status.py +0 -0
  295. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/project_label_config.py +0 -0
  296. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/project_sampling.py +0 -0
  297. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/project_skip_queue.py +0 -0
  298. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/prompt.py +0 -0
  299. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/prompt_associated_projects_item.py +0 -0
  300. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/prompt_associated_projects_item_id.py +0 -0
  301. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/prompt_created_by.py +0 -0
  302. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/prompt_organization.py +0 -0
  303. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/prompt_version.py +0 -0
  304. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/prompt_version_created_by.py +0 -0
  305. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/prompt_version_organization.py +0 -0
  306. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/prompt_version_provider.py +0 -0
  307. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/redis_export_storage.py +0 -0
  308. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/redis_export_storage_status.py +0 -0
  309. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/redis_import_storage.py +0 -0
  310. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/redis_import_storage_status.py +0 -0
  311. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/refined_prompt_response.py +0 -0
  312. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/refined_prompt_response_refinement_status.py +0 -0
  313. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/rotate_token_response.py +0 -0
  314. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/s3export_storage.py +0 -0
  315. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/s3export_storage_status.py +0 -0
  316. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/s3import_storage.py +0 -0
  317. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/s3import_storage_status.py +0 -0
  318. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/s3s_export_storage.py +0 -0
  319. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/s3s_import_storage.py +0 -0
  320. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/s3s_import_storage_status.py +0 -0
  321. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/serialization_option.py +0 -0
  322. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/serialization_options.py +0 -0
  323. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/task.py +0 -0
  324. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/task_annotators_item.py +0 -0
  325. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/task_comment_authors_item.py +0 -0
  326. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/task_filter_options.py +0 -0
  327. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/user_simple.py +0 -0
  328. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/view.py +0 -0
  329. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/webhook.py +0 -0
  330. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/webhook_actions_item.py +0 -0
  331. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/webhook_serializer_for_update.py +0 -0
  332. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/webhook_serializer_for_update_actions_item.py +0 -0
  333. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/types/workspace.py +0 -0
  334. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/users/__init__.py +0 -0
  335. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/users/client.py +0 -0
  336. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/users/types/__init__.py +0 -0
  337. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/users/types/users_get_token_response.py +0 -0
  338. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/users/types/users_reset_token_response.py +0 -0
  339. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/version.py +0 -0
  340. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/versions/__init__.py +0 -0
  341. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/versions/client.py +0 -0
  342. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/versions/types/__init__.py +0 -0
  343. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/versions/types/versions_get_response.py +0 -0
  344. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/versions/types/versions_get_response_edition.py +0 -0
  345. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/views/__init__.py +0 -0
  346. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/views/client.py +0 -0
  347. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/views/types/__init__.py +0 -0
  348. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/views/types/views_create_request_data.py +0 -0
  349. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/views/types/views_create_request_data_filters.py +0 -0
  350. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/views/types/views_create_request_data_filters_conjunction.py +0 -0
  351. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/views/types/views_create_request_data_filters_items_item.py +0 -0
  352. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/views/types/views_create_request_data_filters_items_item_filter.py +0 -0
  353. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/views/types/views_create_request_data_filters_items_item_operator.py +0 -0
  354. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/views/types/views_create_request_data_filters_items_item_value.py +0 -0
  355. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/views/types/views_create_request_data_ordering_item.py +0 -0
  356. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/views/types/views_update_request_data.py +0 -0
  357. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/views/types/views_update_request_data_filters.py +0 -0
  358. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/views/types/views_update_request_data_filters_conjunction.py +0 -0
  359. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/views/types/views_update_request_data_filters_items_item.py +0 -0
  360. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/views/types/views_update_request_data_filters_items_item_filter.py +0 -0
  361. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/views/types/views_update_request_data_filters_items_item_operator.py +0 -0
  362. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/views/types/views_update_request_data_filters_items_item_value.py +0 -0
  363. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/views/types/views_update_request_data_ordering_item.py +0 -0
  364. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/webhooks/__init__.py +0 -0
  365. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/webhooks/client.py +0 -0
  366. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/webhooks/types/__init__.py +0 -0
  367. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/webhooks/types/webhooks_update_request_actions_item.py +0 -0
  368. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/workspaces/__init__.py +0 -0
  369. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/workspaces/client.py +0 -0
  370. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/workspaces/members/__init__.py +0 -0
  371. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/workspaces/members/client.py +0 -0
  372. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/workspaces/members/types/__init__.py +0 -0
  373. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/workspaces/members/types/members_create_response.py +0 -0
  374. {label_studio_sdk-1.0.18 → label_studio_sdk-1.0.20}/src/label_studio_sdk/workspaces/members/types/members_list_response_item.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: label-studio-sdk
3
- Version: 1.0.18
3
+ Version: 1.0.20
4
4
  Summary:
5
5
  Requires-Python: >=3.9,<4
6
6
  Classifier: Intended Audience :: Developers
@@ -19,7 +19,7 @@ Classifier: Programming Language :: Python :: 3.13
19
19
  Classifier: Programming Language :: Python :: 3.8
20
20
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
21
21
  Classifier: Typing :: Typed
22
- Requires-Dist: Pillow (>=10.0.1)
22
+ Requires-Dist: Pillow (>=11.3.0)
23
23
  Requires-Dist: appdirs (>=1.4.3)
24
24
  Requires-Dist: datamodel-code-generator (==0.26.1)
25
25
  Requires-Dist: httpx (>=0.21.2)
@@ -38,6 +38,7 @@ Requires-Dist: requests (>=2.22.0)
38
38
  Requires-Dist: requests-mock (==1.12.1)
39
39
  Requires-Dist: typing_extensions (>=4.0.0)
40
40
  Requires-Dist: ujson (>=5.8.0)
41
+ Requires-Dist: urllib3 (>=2.5.0)
41
42
  Requires-Dist: xmljson (==0.2.1)
42
43
  Project-URL: Repository, https://github.com/HumanSignal/label-studio-sdk
43
44
  Description-Content-Type: text/markdown
@@ -3,7 +3,7 @@ name = "label-studio-sdk"
3
3
 
4
4
  [tool.poetry]
5
5
  name = "label-studio-sdk"
6
- version = "1.0.18"
6
+ version = "1.0.20"
7
7
  description = ""
8
8
  readme = "README.md"
9
9
  authors = []
@@ -35,7 +35,7 @@ Repository = 'https://github.com/HumanSignal/label-studio-sdk'
35
35
 
36
36
  [tool.poetry.dependencies]
37
37
  python = ">=3.9,<4"
38
- Pillow = ">=10.0.1"
38
+ Pillow = ">=11.3.0"
39
39
  appdirs = ">=1.4.3"
40
40
  datamodel-code-generator = "0.26.1"
41
41
  httpx = ">=0.21.2"
@@ -54,6 +54,7 @@ requests = ">=2.22.0"
54
54
  requests-mock = "1.12.1"
55
55
  typing_extensions = ">= 4.0.0"
56
56
  ujson = ">=5.8.0"
57
+ urllib3 = ">=2.5.0"
57
58
  xmljson = "0.2.1"
58
59
 
59
60
  [tool.poetry.dev-dependencies]
@@ -159,7 +159,13 @@ from .ml import (
159
159
  MlUpdateResponse,
160
160
  MlUpdateResponseAuthMethod,
161
161
  )
162
- from .projects import ProjectsCreateResponse, ProjectsImportTasksResponse, ProjectsListResponse, ProjectsUpdateResponse
162
+ from .projects import (
163
+ ProjectsCreateResponse,
164
+ ProjectsImportTasksResponse,
165
+ ProjectsListRequestFilter,
166
+ ProjectsListResponse,
167
+ ProjectsUpdateResponse,
168
+ )
163
169
  from .prompts import (
164
170
  PromptsBatchFailedPredictionsRequestFailedPredictionsItem,
165
171
  PromptsBatchFailedPredictionsResponse,
@@ -293,6 +299,7 @@ __all__ = [
293
299
  "ProjectSkipQueue",
294
300
  "ProjectsCreateResponse",
295
301
  "ProjectsImportTasksResponse",
302
+ "ProjectsListRequestFilter",
296
303
  "ProjectsListResponse",
297
304
  "ProjectsUpdateResponse",
298
305
  "Prompt",
@@ -134,7 +134,7 @@ def has_variable(actual_value):
134
134
  :param actual_value: value to check
135
135
  :return: True if value has variable
136
136
  """
137
- expression = "^\$[A-Za-z_]+$"
137
+ expression = r"^\$[A-Za-z_]+$"
138
138
  pattern = re.compile(expression)
139
139
  full_match = pattern.fullmatch(actual_value)
140
140
  if full_match:
@@ -582,13 +582,26 @@ class Converter(object):
582
582
  self._check_format(Format.JSON)
583
583
  ensure_dir(output_dir)
584
584
  output_file = os.path.join(output_dir, "result.json")
585
- records = []
585
+
586
586
  if is_dir:
587
- for json_file in glob(os.path.join(input_data, "*.json")):
588
- with io.open(json_file, encoding="utf8") as f:
589
- records.append(json.load(f))
587
+ # Memory-optimized: stream JSON writing instead of accumulating in memory
590
588
  with io.open(output_file, mode="w", encoding="utf8") as fout:
591
- json.dump(records, fout, indent=2, ensure_ascii=False)
589
+ fout.write("[\n")
590
+ first_record = True
591
+
592
+ for json_file in glob(os.path.join(input_data, "*.json")):
593
+ with io.open(json_file, encoding="utf8") as f:
594
+ record = json.load(f)
595
+
596
+ if not first_record:
597
+ fout.write(",\n")
598
+ json.dump(record, fout, indent=2, ensure_ascii=False)
599
+ first_record = False
600
+
601
+ # Free memory immediately
602
+ del record
603
+
604
+ fout.write("\n]")
592
605
  else:
593
606
  copy2(input_data, output_file)
594
607
 
@@ -596,26 +609,39 @@ class Converter(object):
596
609
  self._check_format(Format.JSON_MIN)
597
610
  ensure_dir(output_dir)
598
611
  output_file = os.path.join(output_dir, "result.json")
599
- records = []
600
612
  item_iterator = self.iter_from_dir if is_dir else self.iter_from_json_file
601
613
 
602
- for item in item_iterator(input_data):
603
- record = deepcopy(item["input"])
604
- if item.get("id") is not None:
605
- record["id"] = item["id"]
606
- for name, value in item["output"].items():
607
- record[name] = prettify_result(value)
608
- record["annotator"] = get_annotator(item, int_id=True)
609
- record["annotation_id"] = item["annotation_id"]
610
- record["created_at"] = item["created_at"]
611
- record["updated_at"] = item["updated_at"]
612
- record["lead_time"] = item["lead_time"]
613
- if "agreement" in item:
614
- record["agreement"] = item["agreement"]
615
- records.append(record)
616
-
617
614
  with io.open(output_file, mode="w", encoding="utf8") as fout:
618
- json.dump(records, fout, indent=2, ensure_ascii=False)
615
+ fout.write("[\n")
616
+ first_record = True
617
+
618
+ for item in item_iterator(input_data):
619
+ # SAFE memory optimization: use json serialization/deserialization
620
+ # This avoids deepcopy but ensures complete isolation of objects
621
+ record = json.loads(json.dumps(item["input"]))
622
+
623
+ if item.get("id") is not None:
624
+ record["id"] = item["id"]
625
+ for name, value in item["output"].items():
626
+ record[name] = prettify_result(value)
627
+ record["annotator"] = get_annotator(item, int_id=True)
628
+ record["annotation_id"] = item["annotation_id"]
629
+ record["created_at"] = item["created_at"]
630
+ record["updated_at"] = item["updated_at"]
631
+ record["lead_time"] = item["lead_time"]
632
+ if "agreement" in item:
633
+ record["agreement"] = item["agreement"]
634
+
635
+ # Write record to file immediately
636
+ if not first_record:
637
+ fout.write(",\n")
638
+ json.dump(record, fout, indent=2, ensure_ascii=False)
639
+ first_record = False
640
+
641
+ # Explicitly delete record to free memory
642
+ del record
643
+
644
+ fout.write("\n]")
619
645
 
620
646
  def convert_to_csv(self, input_data, output_dir, is_dir=True, **kwargs):
621
647
  self._check_format(Format.CSV)
@@ -119,7 +119,7 @@ class FilesClient:
119
119
 
120
120
  You will need to include the file data in the request body. For example:
121
121
  ```bash
122
- curl -H 'Authorization: Token abc123' \ -X POST 'https://localhost:8080/api/import/file-upload/245' -F file=@path/to/my_file.csv
122
+ curl -H 'Authorization: Token abc123' -X POST 'https://localhost:8080/api/import/file-upload/245' -F 'file=@path/to/my_file.csv'
123
123
  ```
124
124
 
125
125
  Parameters
@@ -445,7 +445,7 @@ class AsyncFilesClient:
445
445
 
446
446
  You will need to include the file data in the request body. For example:
447
447
  ```bash
448
- curl -H 'Authorization: Token abc123' \ -X POST 'https://localhost:8080/api/import/file-upload/245' -F file=@path/to/my_file.csv
448
+ curl -H 'Authorization: Token abc123' -X POST 'https://localhost:8080/api/import/file-upload/245' -F 'file=@path/to/my_file.csv'
449
449
  ```
450
450
 
451
451
  Parameters
@@ -1,6 +1,12 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
- from .types import ProjectsCreateResponse, ProjectsImportTasksResponse, ProjectsListResponse, ProjectsUpdateResponse
3
+ from .types import (
4
+ ProjectsCreateResponse,
5
+ ProjectsImportTasksResponse,
6
+ ProjectsListRequestFilter,
7
+ ProjectsListResponse,
8
+ ProjectsUpdateResponse,
9
+ )
4
10
  from . import exports, pauses
5
11
  from .exports import ExportsConvertResponse, ExportsListFormatsResponseItem
6
12
 
@@ -9,6 +15,7 @@ __all__ = [
9
15
  "ExportsListFormatsResponseItem",
10
16
  "ProjectsCreateResponse",
11
17
  "ProjectsImportTasksResponse",
18
+ "ProjectsListRequestFilter",
12
19
  "ProjectsListResponse",
13
20
  "ProjectsUpdateResponse",
14
21
  "exports",
@@ -4,6 +4,7 @@ import typing
4
4
  from ..core.client_wrapper import SyncClientWrapper
5
5
  from .pauses.client import PausesClient
6
6
  from .exports.client import ExportsClient
7
+ from .types.projects_list_request_filter import ProjectsListRequestFilter
7
8
  from ..core.request_options import RequestOptions
8
9
  from ..core.pagination import SyncPager
9
10
  from ..types.project import Project
@@ -41,6 +42,8 @@ class ProjectsClient:
41
42
  page: typing.Optional[int] = None,
42
43
  page_size: typing.Optional[int] = None,
43
44
  workspaces: typing.Optional[int] = None,
45
+ include: typing.Optional[str] = None,
46
+ filter: typing.Optional[ProjectsListRequestFilter] = None,
44
47
  request_options: typing.Optional[RequestOptions] = None,
45
48
  ) -> SyncPager[Project]:
46
49
  """
@@ -75,6 +78,12 @@ class ProjectsClient:
75
78
  workspaces : typing.Optional[int]
76
79
  workspaces
77
80
 
81
+ include : typing.Optional[str]
82
+ Comma-separated list of count fields to include in the response to optimize performance. Available fields: task_number, finished_task_number, total_predictions_number, total_annotations_number, num_tasks_with_annotations, useful_annotation_number, ground_truth_number, skipped_annotations_number. If not specified, all count fields are included.
83
+
84
+ filter : typing.Optional[ProjectsListRequestFilter]
85
+ Filter projects by pinned status. Use 'pinned_only' to return only pinned projects, 'exclude_pinned' to return only non-pinned projects, or 'all' to return all projects.
86
+
78
87
  request_options : typing.Optional[RequestOptions]
79
88
  Request-specific configuration.
80
89
 
@@ -90,7 +99,9 @@ class ProjectsClient:
90
99
  client = LabelStudio(
91
100
  api_key="YOUR_API_KEY",
92
101
  )
93
- response = client.projects.list()
102
+ response = client.projects.list(
103
+ include="task_number,total_annotations_number,num_tasks_with_annotations",
104
+ )
94
105
  for item in response:
95
106
  yield item
96
107
  # alternatively, you can paginate page-by-page
@@ -108,6 +119,8 @@ class ProjectsClient:
108
119
  "page": page,
109
120
  "page_size": page_size,
110
121
  "workspaces": workspaces,
122
+ "include": include,
123
+ "filter": filter,
111
124
  },
112
125
  request_options=request_options,
113
126
  )
@@ -128,6 +141,8 @@ class ProjectsClient:
128
141
  page=page + 1,
129
142
  page_size=page_size,
130
143
  workspaces=workspaces,
144
+ include=include,
145
+ filter=filter,
131
146
  request_options=request_options,
132
147
  )
133
148
  _items = _parsed_response.results
@@ -207,7 +222,7 @@ class ProjectsClient:
207
222
  Project color in HEX format
208
223
 
209
224
  control_weights : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
210
- Dict of weights for each control tag in metric calculation. Each control tag (e.g. label or choice) will have its own key in control weight dict with weight for each label and overall weight. For example, if a bounding box annotation with a control tag named my_bbox should be included with 0.33 weight in agreement calculation, and the first label Car should be twice as important as Airplane, then you need to specify: \{'my_bbox': \{'type': 'RectangleLabels', 'labels': \{'Car': 1.0, 'Airplane': 0.5}, 'overall': 0.33}}
225
+ Dict of weights for each control tag in metric calculation. Each control tag (e.g. label or choice) will have its own key in control weight dict with weight for each label and overall weight. For example, if a bounding box annotation with a control tag named my_bbox should be included with 0.33 weight in agreement calculation, and the first label Car should be twice as important as Airplane, then you need to specify: {'my_bbox': {'type': 'RectangleLabels', 'labels': {'Car': 1.0, 'Airplane': 0.5}, 'overall': 0.33}}
211
226
 
212
227
 
213
228
  workspace : typing.Optional[int]
@@ -441,7 +456,7 @@ class ProjectsClient:
441
456
  Project color in HEX format
442
457
 
443
458
  control_weights : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
444
- Dict of weights for each control tag in metric calculation. Each control tag (e.g. label or choice) will have its own key in control weight dict with weight for each label and overall weight. For example, if a bounding box annotation with a control tag named my_bbox should be included with 0.33 weight in agreement calculation, and the first label Car should be twice as important as Airplane, then you need to specify: \{'my_bbox': \{'type': 'RectangleLabels', 'labels': \{'Car': 1.0, 'Airplane': 0.5}, 'overall': 0.33}}
459
+ Dict of weights for each control tag in metric calculation. Each control tag (e.g. label or choice) will have its own key in control weight dict with weight for each label and overall weight. For example, if a bounding box annotation with a control tag named my_bbox should be included with 0.33 weight in agreement calculation, and the first label Car should be twice as important as Airplane, then you need to specify: {'my_bbox': {'type': 'RectangleLabels', 'labels': {'Car': 1.0, 'Airplane': 0.5}, 'overall': 0.33}}
445
460
 
446
461
 
447
462
  workspace : typing.Optional[int]
@@ -520,84 +535,80 @@ class ProjectsClient:
520
535
  request_options: typing.Optional[RequestOptions] = None,
521
536
  ) -> ProjectsImportTasksResponse:
522
537
  """
523
-
538
+
524
539
  Use this API endpoint to import labeling tasks in bulk. Note that each POST request is limited at 250K tasks and 200 MB.
525
- The project ID can be found in the URL when viewing the project in Label Studio, or you can retrieve all project IDs using [List all projects](../projects/list).
526
-
540
+ The project ID can be found in the URL when viewing the project in Label Studio, or you can retrieve all project IDs using [List all projects](../projects/list).
541
+
527
542
  <Note>
528
- Imported data is verified against a project *label_config* and must include all variables that were used in the *label_config*.
529
-
543
+ Imported data is verified against a project *label_config* and must include all variables that were used in the *label_config*.
544
+
530
545
  For example, if the label configuration has a *$text* variable, then each item in a data object must include a `text` field.
531
546
  </Note>
532
-
547
+
533
548
  There are three possible ways to import tasks with this endpoint:
534
-
535
- #### 1\. **POST with data**
549
+
550
+ #### 1. **POST with data**
536
551
  Send JSON tasks as POST data. Only JSON is supported for POSTing files directly.
537
-
552
+
538
553
  Update this example to specify your authorization token and Label Studio instance host, then run the following from
539
554
  the command line:
540
-
555
+
541
556
  ```bash
542
- curl -H 'Content-Type: application/json' -H 'Authorization: Token abc123' \
543
- -X POST 'https://localhost:8080/api/projects/1/import' --data '[{"text": "Some text 1"}, {"text": "Some text 2"}]'
557
+ curl -H 'Content-Type: application/json' -H 'Authorization: Token abc123' -X POST 'https://localhost:8080/api/projects/1/import' --data '[{"text": "Some text 1"}, {"text": "Some text 2"}]'
544
558
  ```
545
-
546
- #### 2\. **POST with files**
559
+
560
+ #### 2. **POST with files**
547
561
  Send tasks as files. You can attach multiple files with different names.
548
-
562
+
549
563
  - **JSON**: text files in JavaScript object notation format
550
564
  - **CSV**: text files with tables in Comma Separated Values format
551
565
  - **TSV**: text files with tables in Tab Separated Value format
552
566
  - **TXT**: simple text files are similar to CSV with one column and no header, supported for projects with one source only
553
-
567
+
554
568
  Update this example to specify your authorization token, Label Studio instance host, and file name and path,
555
569
  then run the following from the command line:
556
-
570
+
557
571
  ```bash
558
- curl -H 'Authorization: Token abc123' \
559
- -X POST 'https://localhost:8080/api/projects/1/import' -F ‘file=@path/to/my_file.csv’
572
+ curl -H 'Authorization: Token abc123' -X POST 'https://localhost:8080/api/projects/1/import' -F 'file=@path/to/my_file.csv'
560
573
  ```
561
-
562
- #### 3\. **POST with URL**
574
+
575
+ #### 3. **POST with URL**
563
576
  You can also provide a URL to a file with labeling tasks. Supported file formats are the same as in option 2.
564
-
577
+
565
578
  ```bash
566
- curl -H 'Content-Type: application/json' -H 'Authorization: Token abc123' \
567
- -X POST 'https://localhost:8080/api/projects/1/import' \
568
- --data '[{"url": "http://example.com/test1.csv"}, {"url": "http://example.com/test2.csv"}]'
579
+ curl -H 'Content-Type: application/json' -H 'Authorization: Token abc123' -X POST 'https://localhost:8080/api/projects/1/import' --data '[{"url": "http://example.com/test1.csv"}, {"url": "http://example.com/test2.csv"}]'
569
580
  ```
570
-
581
+
571
582
  <br>
572
-
583
+
573
584
  Parameters
574
585
  ----------
575
586
  id : int
576
587
  A unique integer value identifying this project.
577
-
588
+
578
589
  request : typing.Sequence[typing.Dict[str, typing.Optional[typing.Any]]]
579
-
590
+
580
591
  commit_to_project : typing.Optional[bool]
581
592
  Set to "true" to immediately commit tasks to the project.
582
-
593
+
583
594
  return_task_ids : typing.Optional[bool]
584
595
  Set to "true" to return task IDs in the response.
585
-
596
+
586
597
  preannotated_from_fields : typing.Optional[typing.Union[str, typing.Sequence[str]]]
587
598
  List of fields to preannotate from the task data. For example, if you provide a list of `{"text": "text", "prediction": "label"}` items in the request, the system will create a task with the `text` field and a prediction with the `label` field when `preannoted_from_fields=["prediction"]`.
588
-
599
+
589
600
  request_options : typing.Optional[RequestOptions]
590
601
  Request-specific configuration.
591
-
602
+
592
603
  Returns
593
604
  -------
594
605
  ProjectsImportTasksResponse
595
606
  Tasks successfully imported
596
-
607
+
597
608
  Examples
598
609
  --------
599
610
  from label_studio_sdk import LabelStudio
600
-
611
+
601
612
  client = LabelStudio(
602
613
  api_key="YOUR_API_KEY",
603
614
  )
@@ -718,6 +729,8 @@ class AsyncProjectsClient:
718
729
  page: typing.Optional[int] = None,
719
730
  page_size: typing.Optional[int] = None,
720
731
  workspaces: typing.Optional[int] = None,
732
+ include: typing.Optional[str] = None,
733
+ filter: typing.Optional[ProjectsListRequestFilter] = None,
721
734
  request_options: typing.Optional[RequestOptions] = None,
722
735
  ) -> AsyncPager[Project]:
723
736
  """
@@ -752,6 +765,12 @@ class AsyncProjectsClient:
752
765
  workspaces : typing.Optional[int]
753
766
  workspaces
754
767
 
768
+ include : typing.Optional[str]
769
+ Comma-separated list of count fields to include in the response to optimize performance. Available fields: task_number, finished_task_number, total_predictions_number, total_annotations_number, num_tasks_with_annotations, useful_annotation_number, ground_truth_number, skipped_annotations_number. If not specified, all count fields are included.
770
+
771
+ filter : typing.Optional[ProjectsListRequestFilter]
772
+ Filter projects by pinned status. Use 'pinned_only' to return only pinned projects, 'exclude_pinned' to return only non-pinned projects, or 'all' to return all projects.
773
+
755
774
  request_options : typing.Optional[RequestOptions]
756
775
  Request-specific configuration.
757
776
 
@@ -772,7 +791,9 @@ class AsyncProjectsClient:
772
791
 
773
792
 
774
793
  async def main() -> None:
775
- response = await client.projects.list()
794
+ response = await client.projects.list(
795
+ include="task_number,total_annotations_number,num_tasks_with_annotations",
796
+ )
776
797
  async for item in response:
777
798
  yield item
778
799
  # alternatively, you can paginate page-by-page
@@ -793,6 +814,8 @@ class AsyncProjectsClient:
793
814
  "page": page,
794
815
  "page_size": page_size,
795
816
  "workspaces": workspaces,
817
+ "include": include,
818
+ "filter": filter,
796
819
  },
797
820
  request_options=request_options,
798
821
  )
@@ -813,6 +836,8 @@ class AsyncProjectsClient:
813
836
  page=page + 1,
814
837
  page_size=page_size,
815
838
  workspaces=workspaces,
839
+ include=include,
840
+ filter=filter,
816
841
  request_options=request_options,
817
842
  )
818
843
  _items = _parsed_response.results
@@ -892,7 +917,7 @@ class AsyncProjectsClient:
892
917
  Project color in HEX format
893
918
 
894
919
  control_weights : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
895
- Dict of weights for each control tag in metric calculation. Each control tag (e.g. label or choice) will have its own key in control weight dict with weight for each label and overall weight. For example, if a bounding box annotation with a control tag named my_bbox should be included with 0.33 weight in agreement calculation, and the first label Car should be twice as important as Airplane, then you need to specify: \{'my_bbox': \{'type': 'RectangleLabels', 'labels': \{'Car': 1.0, 'Airplane': 0.5}, 'overall': 0.33}}
920
+ Dict of weights for each control tag in metric calculation. Each control tag (e.g. label or choice) will have its own key in control weight dict with weight for each label and overall weight. For example, if a bounding box annotation with a control tag named my_bbox should be included with 0.33 weight in agreement calculation, and the first label Car should be twice as important as Airplane, then you need to specify: {'my_bbox': {'type': 'RectangleLabels', 'labels': {'Car': 1.0, 'Airplane': 0.5}, 'overall': 0.33}}
896
921
 
897
922
 
898
923
  workspace : typing.Optional[int]
@@ -1150,7 +1175,7 @@ class AsyncProjectsClient:
1150
1175
  Project color in HEX format
1151
1176
 
1152
1177
  control_weights : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
1153
- Dict of weights for each control tag in metric calculation. Each control tag (e.g. label or choice) will have its own key in control weight dict with weight for each label and overall weight. For example, if a bounding box annotation with a control tag named my_bbox should be included with 0.33 weight in agreement calculation, and the first label Car should be twice as important as Airplane, then you need to specify: \{'my_bbox': \{'type': 'RectangleLabels', 'labels': \{'Car': 1.0, 'Airplane': 0.5}, 'overall': 0.33}}
1178
+ Dict of weights for each control tag in metric calculation. Each control tag (e.g. label or choice) will have its own key in control weight dict with weight for each label and overall weight. For example, if a bounding box annotation with a control tag named my_bbox should be included with 0.33 weight in agreement calculation, and the first label Car should be twice as important as Airplane, then you need to specify: {'my_bbox': {'type': 'RectangleLabels', 'labels': {'Car': 1.0, 'Airplane': 0.5}, 'overall': 0.33}}
1154
1179
 
1155
1180
 
1156
1181
  workspace : typing.Optional[int]
@@ -1237,98 +1262,94 @@ class AsyncProjectsClient:
1237
1262
  request_options: typing.Optional[RequestOptions] = None,
1238
1263
  ) -> ProjectsImportTasksResponse:
1239
1264
  """
1240
-
1265
+
1241
1266
  Use this API endpoint to import labeling tasks in bulk. Note that each POST request is limited at 250K tasks and 200 MB.
1242
- The project ID can be found in the URL when viewing the project in Label Studio, or you can retrieve all project IDs using [List all projects](../projects/list).
1243
-
1267
+ The project ID can be found in the URL when viewing the project in Label Studio, or you can retrieve all project IDs using [List all projects](../projects/list).
1268
+
1244
1269
  <Note>
1245
- Imported data is verified against a project *label_config* and must include all variables that were used in the *label_config*.
1246
-
1270
+ Imported data is verified against a project *label_config* and must include all variables that were used in the *label_config*.
1271
+
1247
1272
  For example, if the label configuration has a *$text* variable, then each item in a data object must include a `text` field.
1248
1273
  </Note>
1249
-
1274
+
1250
1275
  There are three possible ways to import tasks with this endpoint:
1251
-
1252
- #### 1\. **POST with data**
1276
+
1277
+ #### 1. **POST with data**
1253
1278
  Send JSON tasks as POST data. Only JSON is supported for POSTing files directly.
1254
-
1279
+
1255
1280
  Update this example to specify your authorization token and Label Studio instance host, then run the following from
1256
1281
  the command line:
1257
-
1282
+
1258
1283
  ```bash
1259
- curl -H 'Content-Type: application/json' -H 'Authorization: Token abc123' \
1260
- -X POST 'https://localhost:8080/api/projects/1/import' --data '[{"text": "Some text 1"}, {"text": "Some text 2"}]'
1284
+ curl -H 'Content-Type: application/json' -H 'Authorization: Token abc123' -X POST 'https://localhost:8080/api/projects/1/import' --data '[{"text": "Some text 1"}, {"text": "Some text 2"}]'
1261
1285
  ```
1262
-
1263
- #### 2\. **POST with files**
1286
+
1287
+ #### 2. **POST with files**
1264
1288
  Send tasks as files. You can attach multiple files with different names.
1265
-
1289
+
1266
1290
  - **JSON**: text files in JavaScript object notation format
1267
1291
  - **CSV**: text files with tables in Comma Separated Values format
1268
1292
  - **TSV**: text files with tables in Tab Separated Value format
1269
1293
  - **TXT**: simple text files are similar to CSV with one column and no header, supported for projects with one source only
1270
-
1294
+
1271
1295
  Update this example to specify your authorization token, Label Studio instance host, and file name and path,
1272
1296
  then run the following from the command line:
1273
-
1297
+
1274
1298
  ```bash
1275
- curl -H 'Authorization: Token abc123' \
1276
- -X POST 'https://localhost:8080/api/projects/1/import' -F ‘file=@path/to/my_file.csv’
1299
+ curl -H 'Authorization: Token abc123' -X POST 'https://localhost:8080/api/projects/1/import' -F 'file=@path/to/my_file.csv'
1277
1300
  ```
1278
-
1279
- #### 3\. **POST with URL**
1301
+
1302
+ #### 3. **POST with URL**
1280
1303
  You can also provide a URL to a file with labeling tasks. Supported file formats are the same as in option 2.
1281
-
1304
+
1282
1305
  ```bash
1283
- curl -H 'Content-Type: application/json' -H 'Authorization: Token abc123' \
1284
- -X POST 'https://localhost:8080/api/projects/1/import' \
1285
- --data '[{"url": "http://example.com/test1.csv"}, {"url": "http://example.com/test2.csv"}]'
1306
+ curl -H 'Content-Type: application/json' -H 'Authorization: Token abc123' -X POST 'https://localhost:8080/api/projects/1/import' --data '[{"url": "http://example.com/test1.csv"}, {"url": "http://example.com/test2.csv"}]'
1286
1307
  ```
1287
-
1308
+
1288
1309
  <br>
1289
-
1310
+
1290
1311
  Parameters
1291
1312
  ----------
1292
1313
  id : int
1293
1314
  A unique integer value identifying this project.
1294
-
1315
+
1295
1316
  request : typing.Sequence[typing.Dict[str, typing.Optional[typing.Any]]]
1296
-
1317
+
1297
1318
  commit_to_project : typing.Optional[bool]
1298
1319
  Set to "true" to immediately commit tasks to the project.
1299
-
1320
+
1300
1321
  return_task_ids : typing.Optional[bool]
1301
1322
  Set to "true" to return task IDs in the response.
1302
-
1323
+
1303
1324
  preannotated_from_fields : typing.Optional[typing.Union[str, typing.Sequence[str]]]
1304
1325
  List of fields to preannotate from the task data. For example, if you provide a list of `{"text": "text", "prediction": "label"}` items in the request, the system will create a task with the `text` field and a prediction with the `label` field when `preannoted_from_fields=["prediction"]`.
1305
-
1326
+
1306
1327
  request_options : typing.Optional[RequestOptions]
1307
1328
  Request-specific configuration.
1308
-
1329
+
1309
1330
  Returns
1310
1331
  -------
1311
1332
  ProjectsImportTasksResponse
1312
1333
  Tasks successfully imported
1313
-
1334
+
1314
1335
  Examples
1315
1336
  --------
1316
1337
  import asyncio
1317
-
1338
+
1318
1339
  from label_studio_sdk import AsyncLabelStudio
1319
-
1340
+
1320
1341
  client = AsyncLabelStudio(
1321
1342
  api_key="YOUR_API_KEY",
1322
1343
  )
1323
-
1324
-
1344
+
1345
+
1325
1346
  async def main() -> None:
1326
1347
  await client.projects.import_tasks(
1327
1348
  id=1,
1328
1349
  request=[{"key": "value"}],
1329
1350
  )
1330
-
1331
-
1351
+
1352
+
1332
1353
  asyncio.run(main())
1333
1354
  """
1334
1355
  _response = await self._client_wrapper.httpx_client.request(
@@ -55,7 +55,7 @@ class ExportsClient:
55
55
  ```
56
56
  To export specific tasks with IDs of 123 and 345, run the following from the command line:
57
57
  ```bash
58
- curl -X GET https://localhost:8080/api/projects/{id}/export?ids[]=123\&ids[]=345 -H 'Authorization: Token abc123' --output 'annotations.json'
58
+ curl -X GET "https://localhost:8080/api/projects/{id}/export?ids[]=123&ids[]=345" -H 'Authorization: Token abc123' --output 'annotations.json'
59
59
  ```
60
60
 
61
61
  You must provide a project ID. The project ID can be found in the URL when viewing the project in Label Studio, or you can retrieve all project IDs using [List all projects](../list).
@@ -604,7 +604,7 @@ class AsyncExportsClient:
604
604
  ```
605
605
  To export specific tasks with IDs of 123 and 345, run the following from the command line:
606
606
  ```bash
607
- curl -X GET https://localhost:8080/api/projects/{id}/export?ids[]=123\&ids[]=345 -H 'Authorization: Token abc123' --output 'annotations.json'
607
+ curl -X GET "https://localhost:8080/api/projects/{id}/export?ids[]=123&ids[]=345" -H 'Authorization: Token abc123' --output 'annotations.json'
608
608
  ```
609
609
 
610
610
  You must provide a project ID. The project ID can be found in the URL when viewing the project in Label Studio, or you can retrieve all project IDs using [List all projects](../list).
@@ -15,11 +15,11 @@ class ExportTimeoutError(ApiError):
15
15
  super().__init__(
16
16
  status_code=500,
17
17
  body=(
18
- f"Export job timed out after {timeout} seconds: "
18
+ f"Export job timed out: "
19
19
  f"unable to retrieve export job {export_snapshot.id}. "
20
20
  f"Current status: {export_snapshot.status}. "
21
21
  f"Try manually checking the running job with "
22
- f"`ls.projects.exports.get(project_id={project_id}, export_pk={export_snapshot.id})`."
22
+ f"`ls.projects.exports.get(id=<PROJECT_ID>, export_pk={export_snapshot.id})`."
23
23
  )
24
24
  )
25
25