darwin-py 3.6.2__tar.gz → 3.6.3__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 (235) hide show
  1. {darwin_py-3.6.2 → darwin_py-3.6.3}/PKG-INFO +1 -1
  2. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/dataset/remote_dataset.py +29 -2
  3. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/dataset/utils.py +15 -6
  4. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/datatypes.py +44 -0
  5. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/importer.py +19 -9
  6. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/utils/utils.py +10 -1
  7. darwin_py-3.6.3/darwin/version/__init__.py +1 -0
  8. {darwin_py-3.6.2 → darwin_py-3.6.3}/pyproject.toml +1 -1
  9. darwin_py-3.6.2/darwin/version/__init__.py +0 -1
  10. {darwin_py-3.6.2 → darwin_py-3.6.3}/LICENSE +0 -0
  11. {darwin_py-3.6.2 → darwin_py-3.6.3}/README.md +0 -0
  12. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/__init__.py +0 -0
  13. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/backend_v2.py +0 -0
  14. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/cli.py +0 -0
  15. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/cli_functions.py +0 -0
  16. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/client.py +0 -0
  17. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/config.py +0 -0
  18. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/dataset/__init__.py +0 -0
  19. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/dataset/download_manager.py +0 -0
  20. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/dataset/identifier.py +0 -0
  21. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/dataset/local_dataset.py +0 -0
  22. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/dataset/release.py +0 -0
  23. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/dataset/remote_dataset_v2.py +0 -0
  24. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/dataset/split_manager.py +0 -0
  25. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/dataset/storage_uploader.py +0 -0
  26. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/dataset/upload_manager.py +0 -0
  27. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/doc_enum.py +0 -0
  28. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exceptions.py +0 -0
  29. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/__init__.py +0 -0
  30. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/exporter.py +0 -0
  31. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/__init__.py +0 -0
  32. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/coco.py +0 -0
  33. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/cvat.py +0 -0
  34. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/darwin.py +0 -0
  35. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/dataloop.py +0 -0
  36. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/helpers/__init__.py +0 -0
  37. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/helpers/yolo_class_builder.py +0 -0
  38. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/instance_mask.py +0 -0
  39. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/mask.py +0 -0
  40. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/nifti.py +0 -0
  41. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/numpy_encoder.py +0 -0
  42. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/pascalvoc.py +0 -0
  43. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/semantic_mask.py +0 -0
  44. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/semantic_mask_grey.py +0 -0
  45. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/semantic_mask_index.py +0 -0
  46. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/yolo.py +0 -0
  47. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/yolo_segmented.py +0 -0
  48. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/extractor/__init__.py +0 -0
  49. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/extractor/video.py +0 -0
  50. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/__init__.py +0 -0
  51. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/__init__.py +0 -0
  52. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/client.py +0 -0
  53. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/datasets/__init__.py +0 -0
  54. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/datasets/create_dataset.py +0 -0
  55. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/datasets/get_dataset.py +0 -0
  56. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/datasets/list_datasets.py +0 -0
  57. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/datasets/remove_dataset.py +0 -0
  58. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/items/__init__.py +0 -0
  59. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/items/archive_items.py +0 -0
  60. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/items/assign_items.py +0 -0
  61. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/items/delete_items.py +0 -0
  62. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/items/get.py +0 -0
  63. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/items/move_items.py +0 -0
  64. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/items/move_items_to_folder.py +0 -0
  65. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/items/restore_items.py +0 -0
  66. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/items/set_item_layout.py +0 -0
  67. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/items/set_item_priority.py +0 -0
  68. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/items/set_stage_to_items.py +0 -0
  69. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/items/tag_items.py +0 -0
  70. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/items/untag_items.py +0 -0
  71. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/items/uploads.py +0 -0
  72. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/properties/__init__.py +0 -0
  73. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/properties/create.py +0 -0
  74. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/properties/get.py +0 -0
  75. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/properties/update.py +0 -0
  76. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/team/__init__.py +0 -0
  77. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/team/get_raw.py +0 -0
  78. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/team/get_team.py +0 -0
  79. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/types/__init__.py +0 -0
  80. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/types/common.py +0 -0
  81. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/types/item.py +0 -0
  82. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/types/query.py +0 -0
  83. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/utils/pathutils.py +0 -0
  84. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/workflows/__init__.py +0 -0
  85. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/workflows/get_workflow.py +0 -0
  86. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/workflows/get_workflows.py +0 -0
  87. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/workflows/list_workflows.py +0 -0
  88. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/data_objects/__init__.py +0 -0
  89. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/data_objects/advanced_filters.py +0 -0
  90. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/data_objects/darwinV2.py +0 -0
  91. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/data_objects/dataset.py +0 -0
  92. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/data_objects/item.py +0 -0
  93. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/data_objects/page.py +0 -0
  94. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/data_objects/properties.py +0 -0
  95. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/data_objects/pydantic_base.py +0 -0
  96. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/data_objects/release.py +0 -0
  97. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/data_objects/sorting.py +0 -0
  98. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/data_objects/team.py +0 -0
  99. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/data_objects/team_member_role.py +0 -0
  100. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/data_objects/typing.py +0 -0
  101. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/data_objects/validators.py +0 -0
  102. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/data_objects/workflow.py +0 -0
  103. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/exceptions.py +0 -0
  104. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/helpers/__init__.py +0 -0
  105. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/helpers/assertion.py +0 -0
  106. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/helpers/exception_handler.py +0 -0
  107. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/__init__.py +0 -0
  108. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/client.py +0 -0
  109. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/objects/__init__.py +0 -0
  110. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/objects/base.py +0 -0
  111. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/objects/dataset.py +0 -0
  112. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/objects/item.py +0 -0
  113. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/objects/stage.py +0 -0
  114. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/objects/team.py +0 -0
  115. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/objects/team_member.py +0 -0
  116. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/objects/v7_id.py +0 -0
  117. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/objects/workflow.py +0 -0
  118. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/queries/__init__.py +0 -0
  119. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/queries/dataset.py +0 -0
  120. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/queries/item.py +0 -0
  121. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/queries/item_id.py +0 -0
  122. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/queries/stage.py +0 -0
  123. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/queries/team_member.py +0 -0
  124. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/queries/workflow.py +0 -0
  125. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/types/__init__.py +0 -0
  126. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/pydantic_base.py +0 -0
  127. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/__init__.py +0 -0
  128. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/__init__.py +0 -0
  129. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/datasets/__init__.py +0 -0
  130. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/datasets/fixtures.py +0 -0
  131. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/datasets/test_create_dataset.py +0 -0
  132. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/datasets/test_delete_dataset.py +0 -0
  133. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/datasets/test_get_dataset.py +0 -0
  134. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/datasets/test_list_datasets.py +0 -0
  135. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/fixtures.py +0 -0
  136. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/__init__.py +0 -0
  137. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/fixtures.py +0 -0
  138. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/test_archive_items.py +0 -0
  139. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/test_assign_items.py +0 -0
  140. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/test_delete_items.py +0 -0
  141. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/test_get_items.py +0 -0
  142. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/test_item_data_object.py +0 -0
  143. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/test_move_items.py +0 -0
  144. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/test_move_items_to_folder.py +0 -0
  145. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/test_restore_items.py +0 -0
  146. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/test_set_item_layout.py +0 -0
  147. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/test_set_priority.py +0 -0
  148. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/test_set_stage_to_items.py +0 -0
  149. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/test_tag_items.py +0 -0
  150. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/test_untag_items.py +0 -0
  151. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/test_upload_items.py +0 -0
  152. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/properties/__init__.py +0 -0
  153. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/properties/test_create.py +0 -0
  154. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/properties/test_get.py +0 -0
  155. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/properties/test_update.py +0 -0
  156. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/test_client.py +0 -0
  157. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/test_query.py +0 -0
  158. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/types/__init__.py +0 -0
  159. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/types/test_querystring.py +0 -0
  160. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/workflows/__init__.py +0 -0
  161. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/workflows/test_get_workflow.py +0 -0
  162. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/workflows/test_get_workflows.py +0 -0
  163. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/workflows/test_list_workflows.py +0 -0
  164. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data/.v7/metadata.json +0 -0
  165. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data/.v7/metadata_no_item_level_properties.json +0 -0
  166. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data/.v7/metadata_with_item_level_properties.json +0 -0
  167. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data/base_annotation.json +0 -0
  168. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/__init__.py +0 -0
  169. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/fixtures.py +0 -0
  170. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/test_advanced_filters.py +0 -0
  171. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/test_darwin.py +0 -0
  172. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/test_general_darwin_objects.py +0 -0
  173. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/test_page.py +0 -0
  174. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/test_properties.py +0 -0
  175. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/test_sorting.py +0 -0
  176. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/test_team.py +0 -0
  177. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/test_validators.py +0 -0
  178. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/workflow/__init__.py +0 -0
  179. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/workflow/data/dataset.json +0 -0
  180. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/workflow/data/edge.json +0 -0
  181. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/workflow/data/stage.json +0 -0
  182. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/workflow/data/stage_config.json +0 -0
  183. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/workflow/data/user.json +0 -0
  184. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/workflow/data/workflow.json +0 -0
  185. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/workflow/invalidvaluefortest.py +0 -0
  186. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/workflow/test_wfdataset.py +0 -0
  187. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/workflow/test_wfedge.py +0 -0
  188. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/workflow/test_wfstage.py +0 -0
  189. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/workflow/test_wfstage_config.py +0 -0
  190. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/workflow/test_wfuser.py +0 -0
  191. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/workflow/test_workflow.py +0 -0
  192. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/fixtures.py +0 -0
  193. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/__init__.py +0 -0
  194. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/fixtures.py +0 -0
  195. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/objects/fixtures.py +0 -0
  196. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/objects/test_datasetmeta.py +0 -0
  197. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/objects/test_itemmeta.py +0 -0
  198. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/objects/test_stagemeta.py +0 -0
  199. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/objects/test_teammeta.py +0 -0
  200. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/objects/test_v7_id.py +0 -0
  201. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/objects/test_workflowmeta.py +0 -0
  202. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/queries/test_dataset.py +0 -0
  203. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/queries/test_item.py +0 -0
  204. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/queries/test_item_id.py +0 -0
  205. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/queries/test_stage.py +0 -0
  206. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/queries/test_team_member.py +0 -0
  207. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/queries/test_workflow.py +0 -0
  208. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/test_client.py +0 -0
  209. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/__init__.py +0 -0
  210. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/formats/__init__.py +0 -0
  211. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/formats/coco.py +0 -0
  212. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/formats/coco_masks.py +0 -0
  213. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/formats/csv_tags.py +0 -0
  214. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/formats/csv_tags_video.py +0 -0
  215. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/formats/darwin.py +0 -0
  216. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/formats/dataloop.py +0 -0
  217. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/formats/labelbox.py +0 -0
  218. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/formats/labelbox_schemas.py +0 -0
  219. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/formats/nifti.py +0 -0
  220. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/formats/nifti_schemas.py +0 -0
  221. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/formats/pascal_voc.py +0 -0
  222. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/formats/superannotate.py +0 -0
  223. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/formats/superannotate_schemas.py +0 -0
  224. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/item.py +0 -0
  225. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/item_sorter.py +0 -0
  226. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/options.py +0 -0
  227. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/path_utils.py +0 -0
  228. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/torch/__init__.py +0 -0
  229. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/torch/dataset.py +0 -0
  230. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/torch/transforms.py +0 -0
  231. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/torch/utils.py +0 -0
  232. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/utils/__init__.py +0 -0
  233. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/utils/flatten_list.py +0 -0
  234. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/utils/get_item_count.py +0 -0
  235. {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/validators.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: darwin-py
3
- Version: 3.6.2
3
+ Version: 3.6.3
4
4
  Summary: Library and command line interface for darwin.v7labs.com
5
5
  License: MIT
6
6
  License-File: LICENSE
@@ -3,6 +3,7 @@ import shutil
3
3
  import tempfile
4
4
  import time
5
5
  import zipfile
6
+ from collections import defaultdict
6
7
  from datetime import datetime
7
8
  from pathlib import Path
8
9
  from typing import (
@@ -334,6 +335,12 @@ class RemoteDataset(ABC):
334
335
  metadata_dir.mkdir(parents=True, exist_ok=True)
335
336
  shutil.move(str(metadata_file), str(metadata_dir / "metadata.json"))
336
337
 
338
+ # Collect class names per annotation type as we walk the JSONs,
339
+ # so we don't have to re-parse every annotation file three more
340
+ # times (once per type) in a separate pass.
341
+ supported_class_types = ("tag", "polygon", "bounding_box")
342
+ classes_by_type: Dict[str, set] = defaultdict(set)
343
+
337
344
  # Move the annotations into the right folder and rename them to have the image
338
345
  # original filename as contained in the json
339
346
  for annotation_path in tmp_dir.glob("*.json"):
@@ -353,6 +360,11 @@ class RemoteDataset(ABC):
353
360
  raise MissingDependency(
354
361
  "Missing Dependency: OpenCV required for Video Extraction. Install with `pip install darwin-py\[ocv]`"
355
362
  ) from e
363
+ for ann in annotation.annotations:
364
+ atype = ann.annotation_class.annotation_type
365
+ if atype in supported_class_types:
366
+ classes_by_type[atype].add(ann.annotation_class.name)
367
+
356
368
  filename = Path(annotation.filename).stem
357
369
  if filename in stems:
358
370
  stems[filename] += 1
@@ -365,8 +377,23 @@ class RemoteDataset(ABC):
365
377
  )
366
378
  shutil.move(str(annotation_path), str(destination_name))
367
379
 
368
- # Extract the list of classes and create the text files
369
- make_class_lists(release_dir)
380
+ # Write the class lists next to the annotations we just produced.
381
+ # Using ``annotations_dir.parent`` keeps the output co-located with
382
+ # the corresponding ``annotations/`` folder, which is what every
383
+ # downstream helper expects -- and crucially it works when
384
+ # ``subset_folder_name`` is set, where the annotations live under
385
+ # ``<release_dir>/<subset_folder_name>/annotations`` rather than
386
+ # directly under ``<release_dir>``.
387
+ lists_path = annotations_dir.parent / "lists"
388
+ lists_path.mkdir(exist_ok=True)
389
+ for atype in supported_class_types:
390
+ class_names = classes_by_type.get(atype)
391
+ class_list_path = lists_path / f"classes_{atype}.txt"
392
+ if not class_names:
393
+ if class_list_path.exists():
394
+ class_list_path.unlink()
395
+ continue
396
+ class_list_path.write_text("\n".join(sorted(class_names)))
370
397
 
371
398
  if release.latest and is_unix_like_os():
372
399
  try:
@@ -119,21 +119,30 @@ def extract_classes(
119
119
  return classes, indices_to_classes
120
120
 
121
121
 
122
- def make_class_lists(release_path: Path) -> None:
122
+ def make_class_lists(release_path: Optional[PathLike]) -> None:
123
123
  """
124
124
  Support function to extract classes and save the output to file.
125
125
 
126
126
  Parameters
127
127
  ----------
128
- release_path : Path
129
- Path to the location of the dataset on the file system.
130
- """
131
- assert release_path is not None
128
+ release_path : Optional[PathLike]
129
+ Path to the location of the dataset on the file system, or ``None``.
130
+
131
+ Notes
132
+ -----
133
+ Silently no-ops when ``release_path`` is ``None`` or when the expected
134
+ ``annotations`` directory is missing. This makes the helper safe to call
135
+ on releases that were pulled into a custom subset folder (in which case
136
+ the caller should pass the subset-aware path) or on empty exports.
137
+ """
138
+ if release_path is None:
139
+ return
132
140
  if isinstance(release_path, str):
133
141
  release_path = Path(release_path)
134
142
 
135
143
  annotations_path = release_path / "annotations"
136
- assert annotations_path.exists()
144
+ if not annotations_path.exists():
145
+ return
137
146
  lists_path = release_path / "lists"
138
147
  lists_path.mkdir(exist_ok=True)
139
148
 
@@ -118,6 +118,7 @@ AnnotationType = Literal[ # NB: Some of these are not supported yet
118
118
  "tag",
119
119
  "line",
120
120
  "skeleton",
121
+ "eye",
121
122
  "table",
122
123
  "string",
123
124
  "graph",
@@ -1003,6 +1004,49 @@ def make_skeleton(
1003
1004
  )
1004
1005
 
1005
1006
 
1007
+ def make_eye(
1008
+ class_name: str,
1009
+ nodes: List[Node],
1010
+ subs: Optional[List[SubAnnotation]] = None,
1011
+ slot_names: Optional[List[str]] = None,
1012
+ ) -> Annotation:
1013
+ """
1014
+ Creates and returns an eye annotation.
1015
+
1016
+ Parameters
1017
+ ----------
1018
+ class_name : str
1019
+ The name of the class for this ``Annotation``.
1020
+ nodes : List[Node]
1021
+ List of ``Node``\\s that comprise the eye. Darwin requires exactly four, named
1022
+ ``inner``, ``outer``, ``upper`` and ``lower``. Each Node will have a format
1023
+ similar to:
1024
+
1025
+ .. code-block:: python
1026
+
1027
+ {
1028
+ "name": "inner",
1029
+ "occluded": false,
1030
+ "x": 141.4359,
1031
+ "y": 149.2308
1032
+ }
1033
+
1034
+ subs : Optional[List[SubAnnotation]], default: None
1035
+ List of ``SubAnnotation``\\s for this ``Annotation``.
1036
+
1037
+ Returns
1038
+ -------
1039
+ Annotation
1040
+ An eye ``Annotation``.
1041
+ """
1042
+ return Annotation(
1043
+ AnnotationClass(class_name, "eye"),
1044
+ {"nodes": nodes},
1045
+ subs or [],
1046
+ slot_names=slot_names or [],
1047
+ )
1048
+
1049
+
1006
1050
  def make_ellipse(
1007
1051
  class_name: str,
1008
1052
  parameters: EllipseData,
@@ -79,6 +79,10 @@ except ImportError:
79
79
  # Classes missing import support on backend side
80
80
  UNSUPPORTED_CLASSES = ["string", "graph"]
81
81
 
82
+ # Classes whose definition carries a node structure that the class creation endpoint
83
+ # cannot express, so they must already exist on the team before importing into them
84
+ UNCREATABLE_CLASS_TYPES = ["skeleton", "eye"]
85
+
82
86
  # Classes that are defined on team level automatically and available in all datasets
83
87
  GLOBAL_CLASSES = ["__raster_layer__"]
84
88
 
@@ -124,6 +128,7 @@ def _build_main_annotations_lookup_table(
124
128
  "link",
125
129
  "polygon",
126
130
  "skeleton",
131
+ "eye",
127
132
  "tag",
128
133
  "string",
129
134
  "table",
@@ -1662,13 +1667,18 @@ def import_annotations( # noqa: C901
1662
1667
  style="info",
1663
1668
  )
1664
1669
 
1665
- missing_skeletons: List[dt.AnnotationClass] = list(
1666
- filter(_is_skeleton_class, local_classes_not_in_team)
1670
+ missing_uncreatable_classes: List[dt.AnnotationClass] = list(
1671
+ filter(_is_uncreatable_class, local_classes_not_in_team)
1667
1672
  )
1668
- missing_skeleton_names: str = ", ".join(map(_get_skeleton_name, missing_skeletons))
1669
- if missing_skeletons:
1673
+ if missing_uncreatable_classes:
1674
+ missing_class_names: str = ", ".join(
1675
+ f"{_get_class_name(the_class)} ({the_class.annotation_internal_type or the_class.annotation_type})"
1676
+ for the_class in missing_uncreatable_classes
1677
+ )
1670
1678
  console.print(
1671
- f"Found missing skeleton classes: {missing_skeleton_names}. Missing Skeleton classes cannot be created. Exiting now.",
1679
+ f"Found missing classes that cannot be created: {missing_class_names}. "
1680
+ "Create them in the Darwin UI before importing, or check that the "
1681
+ "annotation type is available for your team. Exiting now.",
1672
1682
  style="error",
1673
1683
  )
1674
1684
  return
@@ -1899,14 +1909,14 @@ def _warn_unsupported_annotations(parsed_files: List[AnnotationFile]) -> None:
1899
1909
  )
1900
1910
 
1901
1911
 
1902
- def _is_skeleton_class(the_class: dt.AnnotationClass) -> bool:
1912
+ def _is_uncreatable_class(the_class: dt.AnnotationClass) -> bool:
1903
1913
  return (
1904
1914
  the_class.annotation_internal_type or the_class.annotation_type
1905
- ) == "skeleton"
1915
+ ) in UNCREATABLE_CLASS_TYPES
1906
1916
 
1907
1917
 
1908
- def _get_skeleton_name(skeleton: dt.AnnotationClass) -> str:
1909
- return skeleton.name
1918
+ def _get_class_name(the_class: dt.AnnotationClass) -> str:
1919
+ return the_class.name
1910
1920
 
1911
1921
 
1912
1922
  def _handle_subs(
@@ -866,6 +866,10 @@ def _parse_darwin_annotation(
866
866
  main_annotation = dt.make_skeleton(
867
867
  name, annotation["skeleton"]["nodes"], slot_names=slot_names
868
868
  )
869
+ elif "eye" in annotation:
870
+ main_annotation = dt.make_eye(
871
+ name, annotation["eye"]["nodes"], slot_names=slot_names
872
+ )
869
873
  elif "table" in annotation:
870
874
  main_annotation = dt.make_table(
871
875
  name,
@@ -949,6 +953,8 @@ def make_keyframe_annotation(
949
953
  return dt.make_cuboid(name, annotation_data)
950
954
  elif annotation_type == "skeleton":
951
955
  return dt.make_skeleton(name, annotation_data["nodes"])
956
+ elif annotation_type == "eye":
957
+ return dt.make_eye(name, annotation_data["nodes"])
952
958
  elif annotation_type == "table":
953
959
  return dt.make_table(
954
960
  name, annotation_data["bounding_box"], annotation_data["cells"]
@@ -1013,7 +1019,7 @@ def update_annotation_data(
1013
1019
  "back": main_annotation_data["back"],
1014
1020
  "front": main_annotation_data["front"],
1015
1021
  }
1016
- elif annotation_type == "skeleton":
1022
+ elif annotation_type in ("skeleton", "eye"):
1017
1023
  annotation_data = {"nodes": main_annotation_data["nodes"]}
1018
1024
  elif annotation_type == "table":
1019
1025
  annotation_type = "table"
@@ -1142,6 +1148,9 @@ def get_annotation_type_and_data(
1142
1148
  elif "skeleton" in frame:
1143
1149
  annotation_type = "skeleton"
1144
1150
  annotation_data = {"nodes": frame["skeleton"]["nodes"]}
1151
+ elif "eye" in frame:
1152
+ annotation_type = "eye"
1153
+ annotation_data = {"nodes": frame["eye"]["nodes"]}
1145
1154
  elif "table" in frame:
1146
1155
  annotation_type = "table"
1147
1156
  annotation_data = {
@@ -0,0 +1 @@
1
+ __version__ = "3.6.3"
@@ -13,7 +13,7 @@ license = "MIT"
13
13
  name = "darwin-py"
14
14
  readme = "README.md"
15
15
  repository = "https://github.com/v7labs/darwin-py"
16
- version = "3.6.2"
16
+ version = "3.6.3"
17
17
  [[tool.poetry.packages]]
18
18
  include = "darwin"
19
19
 
@@ -1 +0,0 @@
1
- __version__ = "3.6.2"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes