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.
- {darwin_py-3.6.2 → darwin_py-3.6.3}/PKG-INFO +1 -1
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/dataset/remote_dataset.py +29 -2
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/dataset/utils.py +15 -6
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/datatypes.py +44 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/importer.py +19 -9
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/utils/utils.py +10 -1
- darwin_py-3.6.3/darwin/version/__init__.py +1 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/pyproject.toml +1 -1
- darwin_py-3.6.2/darwin/version/__init__.py +0 -1
- {darwin_py-3.6.2 → darwin_py-3.6.3}/LICENSE +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/README.md +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/backend_v2.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/cli.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/cli_functions.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/client.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/config.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/dataset/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/dataset/download_manager.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/dataset/identifier.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/dataset/local_dataset.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/dataset/release.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/dataset/remote_dataset_v2.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/dataset/split_manager.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/dataset/storage_uploader.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/dataset/upload_manager.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/doc_enum.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exceptions.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/exporter.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/coco.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/cvat.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/darwin.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/dataloop.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/helpers/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/helpers/yolo_class_builder.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/instance_mask.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/mask.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/nifti.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/numpy_encoder.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/pascalvoc.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/semantic_mask.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/semantic_mask_grey.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/semantic_mask_index.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/yolo.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/exporter/formats/yolo_segmented.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/extractor/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/extractor/video.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/client.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/datasets/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/datasets/create_dataset.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/datasets/get_dataset.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/datasets/list_datasets.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/datasets/remove_dataset.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/items/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/items/archive_items.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/items/assign_items.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/items/delete_items.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/items/get.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/items/move_items.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/items/move_items_to_folder.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/items/restore_items.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/items/set_item_layout.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/items/set_item_priority.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/items/set_stage_to_items.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/items/tag_items.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/items/untag_items.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/items/uploads.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/properties/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/properties/create.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/properties/get.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/properties/update.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/team/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/team/get_raw.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/team/get_team.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/types/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/types/common.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/types/item.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/types/query.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/utils/pathutils.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/workflows/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/workflows/get_workflow.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/workflows/get_workflows.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/core/workflows/list_workflows.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/data_objects/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/data_objects/advanced_filters.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/data_objects/darwinV2.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/data_objects/dataset.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/data_objects/item.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/data_objects/page.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/data_objects/properties.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/data_objects/pydantic_base.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/data_objects/release.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/data_objects/sorting.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/data_objects/team.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/data_objects/team_member_role.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/data_objects/typing.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/data_objects/validators.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/data_objects/workflow.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/exceptions.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/helpers/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/helpers/assertion.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/helpers/exception_handler.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/client.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/objects/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/objects/base.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/objects/dataset.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/objects/item.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/objects/stage.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/objects/team.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/objects/team_member.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/objects/v7_id.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/objects/workflow.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/queries/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/queries/dataset.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/queries/item.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/queries/item_id.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/queries/stage.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/queries/team_member.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/queries/workflow.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/meta/types/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/pydantic_base.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/datasets/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/datasets/fixtures.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/datasets/test_create_dataset.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/datasets/test_delete_dataset.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/datasets/test_get_dataset.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/datasets/test_list_datasets.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/fixtures.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/fixtures.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/test_archive_items.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/test_assign_items.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/test_delete_items.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/test_get_items.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/test_item_data_object.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/test_move_items.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/test_move_items_to_folder.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/test_restore_items.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/test_set_item_layout.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/test_set_priority.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/test_set_stage_to_items.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/test_tag_items.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/test_untag_items.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/items/test_upload_items.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/properties/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/properties/test_create.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/properties/test_get.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/properties/test_update.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/test_client.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/test_query.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/types/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/types/test_querystring.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/workflows/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/workflows/test_get_workflow.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/workflows/test_get_workflows.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/workflows/test_list_workflows.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data/.v7/metadata.json +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data/.v7/metadata_no_item_level_properties.json +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data/.v7/metadata_with_item_level_properties.json +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data/base_annotation.json +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/fixtures.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/test_advanced_filters.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/test_darwin.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/test_general_darwin_objects.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/test_page.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/test_properties.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/test_sorting.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/test_team.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/test_validators.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/workflow/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/workflow/data/dataset.json +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/workflow/data/edge.json +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/workflow/data/stage.json +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/workflow/data/stage_config.json +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/workflow/data/user.json +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/workflow/data/workflow.json +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/workflow/invalidvaluefortest.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/workflow/test_wfdataset.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/workflow/test_wfedge.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/workflow/test_wfstage.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/workflow/test_wfstage_config.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/workflow/test_wfuser.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/data_objects/workflow/test_workflow.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/fixtures.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/fixtures.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/objects/fixtures.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/objects/test_datasetmeta.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/objects/test_itemmeta.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/objects/test_stagemeta.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/objects/test_teammeta.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/objects/test_v7_id.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/objects/test_workflowmeta.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/queries/test_dataset.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/queries/test_item.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/queries/test_item_id.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/queries/test_stage.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/queries/test_team_member.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/queries/test_workflow.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/meta/test_client.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/formats/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/formats/coco.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/formats/coco_masks.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/formats/csv_tags.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/formats/csv_tags_video.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/formats/darwin.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/formats/dataloop.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/formats/labelbox.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/formats/labelbox_schemas.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/formats/nifti.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/formats/nifti_schemas.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/formats/pascal_voc.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/formats/superannotate.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/importer/formats/superannotate_schemas.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/item.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/item_sorter.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/options.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/path_utils.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/torch/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/torch/dataset.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/torch/transforms.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/torch/utils.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/utils/__init__.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/utils/flatten_list.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/utils/get_item_count.py +0 -0
- {darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/validators.py +0 -0
|
@@ -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
|
-
#
|
|
369
|
-
|
|
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:
|
|
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 :
|
|
129
|
-
Path to the location of the dataset on the file system
|
|
130
|
-
|
|
131
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1666
|
-
filter(
|
|
1670
|
+
missing_uncreatable_classes: List[dt.AnnotationClass] = list(
|
|
1671
|
+
filter(_is_uncreatable_class, local_classes_not_in_team)
|
|
1667
1672
|
)
|
|
1668
|
-
|
|
1669
|
-
|
|
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
|
|
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
|
|
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
|
-
)
|
|
1915
|
+
) in UNCREATABLE_CLASS_TYPES
|
|
1906
1916
|
|
|
1907
1917
|
|
|
1908
|
-
def
|
|
1909
|
-
return
|
|
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
|
|
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"
|
|
@@ -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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/datasets/test_create_dataset.py
RENAMED
|
File without changes
|
{darwin_py-3.6.2 → darwin_py-3.6.3}/darwin/future/tests/core/datasets/test_delete_dataset.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|