superannotate 4.4.19b2__tar.gz → 4.4.20.dev1__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.
- {superannotate-4.4.19b2/src/superannotate.egg-info → superannotate-4.4.20.dev1}/PKG-INFO +1 -1
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/__init__.py +1 -1
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/interface/sdk_interface.py +186 -77
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/entities/project.py +1 -1
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/serviceproviders.py +8 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/usecases/annotations.py +59 -36
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/usecases/images.py +20 -7
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/infrastructure/controller.py +4 -5
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/infrastructure/services/annotation.py +1 -1
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/infrastructure/services/item.py +27 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/infrastructure/stream_data_handler.py +3 -1
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1/src/superannotate.egg-info}/PKG-INFO +1 -1
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate.egg-info/SOURCES.txt +0 -1
- superannotate-4.4.19b2/src/superannotate/logger.py +0 -35
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/LICENSE +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/MANIFEST.in +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/README.rst +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/requirements.txt +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/setup.cfg +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/setup.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/__init__.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/__init__.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/analytics/__init__.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/analytics/aggregators.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/analytics/common.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/bin/__init__.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/bin/superannotate.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/common.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/exceptions.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/helpers.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/__init__.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/conversion.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/__init__.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/baseStrategy.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/coco_converters/__init__.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/coco_converters/coco_api.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/coco_converters/coco_converter.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/coco_converters/coco_strategies.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/coco_converters/coco_to_sa_pixel.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/coco_converters/coco_to_sa_vector.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/coco_converters/sa_pixel_to_coco.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/coco_converters/sa_vector_to_coco.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/converters.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/dataloop_converters/__init__.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/dataloop_converters/dataloop_helper.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/dataloop_converters/dataloop_strategies.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/dataloop_converters/dataloop_to_sa_vector.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/googlecloud_converters/__init__.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/googlecloud_converters/googlecloud_strategies.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/googlecloud_converters/googlecloud_to_sa_vector.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/labelbox_converters/__init__.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/labelbox_converters/labelbox_helper.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/labelbox_converters/labelbox_strategies.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/labelbox_converters/labelbox_to_sa_pixel.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/labelbox_converters/labelbox_to_sa_vector.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/sa_json_helper.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/sagemaker_converters/__init__.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/sagemaker_converters/sagemaker_strategies.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/sagemaker_converters/sagemaker_to_sa_pixel.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/sagemaker_converters/sagemaker_to_sa_vector.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/supervisely_converters/__init__.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/supervisely_converters/supervisely_helper.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/supervisely_converters/supervisely_strategies.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/supervisely_converters/supervisely_to_sa_pixel.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/supervisely_converters/supervisely_to_sa_vector.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/vgg_converters/__init__.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/vgg_converters/vgg_helper.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/vgg_converters/vgg_strategies.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/vgg_converters/vgg_to_sa_vector.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/voc_converters/__init__.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/voc_converters/voc_helper.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/voc_converters/voc_strategies.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/voc_converters/voc_to_sa_pixel.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/voc_converters/voc_to_sa_vector.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/vott_converters/__init__.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/vott_converters/vott_strategies.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/vott_converters/vott_to_sa_vector.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/yolo_converters/__init__.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/yolo_converters/yolo_strategies.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/converters/yolo_converters/yolo_to_sa_vector.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/export_from_sa_conversions.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/import_to_sa_conversions.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/input_converters/sa_conversion.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/interface/__init__.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/interface/base_interface.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/interface/cli_interface.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/interface/sdk/__init__.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/interface/sdk/folders.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/interface/sdk/project.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/interface/types.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/app/serializers.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/__init__.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/base_usecases.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/conditions.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/config.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/entities/__init__.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/entities/base.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/entities/classes.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/entities/folder.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/entities/integrations.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/entities/items.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/entities/project_entities.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/enums.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/exceptions.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/plugin.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/pydantic_v1.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/reporter.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/repositories.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/response.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/service_types.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/types.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/usecases/__init__.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/usecases/base.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/usecases/classes.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/usecases/custom_fields.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/usecases/folders.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/usecases/integrations.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/usecases/items.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/usecases/models.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/usecases/projects.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/video_convertor.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/infrastructure/__init__.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/infrastructure/helpers.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/infrastructure/repositories.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/infrastructure/serviceprovider.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/infrastructure/services/__init__.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/infrastructure/services/annotation_class.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/infrastructure/services/custom_field.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/infrastructure/services/folder.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/infrastructure/services/http_client.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/infrastructure/services/integration.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/infrastructure/services/models.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/infrastructure/services/project.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/infrastructure/services/subset.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/infrastructure/utils.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/infrastructure/validators.py +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate.egg-info/dependency_links.txt +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate.egg-info/entry_points.txt +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate.egg-info/requires.txt +0 -0
- {superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate.egg-info/top_level.txt +0 -0
|
@@ -402,17 +402,23 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
402
402
|
|
|
403
403
|
:param project_name: new project's name
|
|
404
404
|
:type project_name: str
|
|
405
|
+
|
|
405
406
|
:param from_project: the name of the project being used for duplication
|
|
406
407
|
:type from_project: str
|
|
408
|
+
|
|
407
409
|
:param project_description: the new project's description. If None, from_project's
|
|
408
410
|
description will be used
|
|
409
411
|
:type project_description: str
|
|
412
|
+
|
|
410
413
|
:param copy_annotation_classes: enables copying annotation classes
|
|
411
414
|
:type copy_annotation_classes: bool
|
|
415
|
+
|
|
412
416
|
:param copy_settings: enables copying project settings
|
|
413
417
|
:type copy_settings: bool
|
|
418
|
+
|
|
414
419
|
:param copy_workflow: enables copying project workflow
|
|
415
420
|
:type copy_workflow: bool
|
|
421
|
+
|
|
416
422
|
:param copy_contributors: enables copying project contributors
|
|
417
423
|
:type copy_contributors: bool
|
|
418
424
|
|
|
@@ -493,6 +499,7 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
493
499
|
|
|
494
500
|
:param project: project name
|
|
495
501
|
:type project: str
|
|
502
|
+
|
|
496
503
|
:param folder_name: the new folder's name
|
|
497
504
|
:type folder_name: str
|
|
498
505
|
|
|
@@ -515,7 +522,7 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
515
522
|
def delete_project(self, project: Union[NotEmptyStr, dict]):
|
|
516
523
|
"""Deletes the project
|
|
517
524
|
|
|
518
|
-
:param project: project name
|
|
525
|
+
:param project: project name
|
|
519
526
|
:type project: str
|
|
520
527
|
"""
|
|
521
528
|
name = project
|
|
@@ -526,8 +533,9 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
526
533
|
def rename_project(self, project: NotEmptyStr, new_name: NotEmptyStr):
|
|
527
534
|
"""Renames the project
|
|
528
535
|
|
|
529
|
-
:param project: project name
|
|
536
|
+
:param project: project name
|
|
530
537
|
:type project: str
|
|
538
|
+
|
|
531
539
|
:param new_name: project's new name
|
|
532
540
|
:type new_name: str
|
|
533
541
|
"""
|
|
@@ -547,6 +555,7 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
547
555
|
|
|
548
556
|
:param project: project name
|
|
549
557
|
:type project: str
|
|
558
|
+
|
|
550
559
|
:param folder_name: folder's name
|
|
551
560
|
:type folder_name: str
|
|
552
561
|
|
|
@@ -563,6 +572,7 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
563
572
|
|
|
564
573
|
:param project: project name
|
|
565
574
|
:type project: str
|
|
575
|
+
|
|
566
576
|
:param folder_names: to be deleted folders' names
|
|
567
577
|
:type folder_names: list of strs
|
|
568
578
|
"""
|
|
@@ -593,14 +603,21 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
593
603
|
:param folder_name: the new folder's name
|
|
594
604
|
:type folder_name: str. If None, all the folders in the project will be returned.
|
|
595
605
|
|
|
596
|
-
:param status: search folders via status. If None, all folders will be returned.
|
|
597
|
-
|
|
606
|
+
:param status: search folders via status. If None, all folders will be returned. \n
|
|
607
|
+
Available statuses are::
|
|
608
|
+
|
|
609
|
+
* NotStarted
|
|
610
|
+
* InProgress
|
|
611
|
+
* Completed
|
|
612
|
+
* OnHold
|
|
613
|
+
:type status: str or list of str
|
|
598
614
|
|
|
599
615
|
:param return_metadata: return metadata of folders instead of names
|
|
600
616
|
:type return_metadata: bool
|
|
601
617
|
|
|
602
618
|
:return: folder names or metadatas
|
|
603
619
|
:rtype: list of strs or dicts
|
|
620
|
+
|
|
604
621
|
"""
|
|
605
622
|
|
|
606
623
|
project = self.controller.get_project(project)
|
|
@@ -640,15 +657,19 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
640
657
|
|
|
641
658
|
:param project: project name
|
|
642
659
|
:type project: str
|
|
660
|
+
|
|
643
661
|
:param include_annotation_classes: enables project annotation classes output under
|
|
644
662
|
the key "annotation_classes"
|
|
645
663
|
:type include_annotation_classes: bool
|
|
664
|
+
|
|
646
665
|
:param include_settings: enables project settings output under
|
|
647
666
|
the key "settings"
|
|
648
667
|
:type include_settings: bool
|
|
668
|
+
|
|
649
669
|
:param include_workflow: enables project workflow output under
|
|
650
670
|
the key "workflow"
|
|
651
671
|
:type include_workflow: bool
|
|
672
|
+
|
|
652
673
|
:param include_contributors: enables project contributors output under
|
|
653
674
|
the key "contributors"
|
|
654
675
|
:type include_contributors: bool
|
|
@@ -743,11 +764,17 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
743
764
|
|
|
744
765
|
:param project: project name
|
|
745
766
|
:type project: str
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
767
|
+
|
|
768
|
+
:param status: status to set.
|
|
769
|
+
|
|
770
|
+
Available statuses are::
|
|
771
|
+
|
|
772
|
+
* NotStarted
|
|
773
|
+
* InProgress
|
|
774
|
+
* Returned
|
|
775
|
+
* Completed
|
|
776
|
+
* OnHold
|
|
777
|
+
|
|
751
778
|
:type status: str
|
|
752
779
|
"""
|
|
753
780
|
project = self.controller.get_project(name=project)
|
|
@@ -764,13 +791,17 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
764
791
|
|
|
765
792
|
:param project: project name
|
|
766
793
|
:type project: str
|
|
794
|
+
|
|
767
795
|
:param folder: folder name
|
|
768
796
|
:type folder: str
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
797
|
+
|
|
798
|
+
:param status: status to set. \n
|
|
799
|
+
Available statuses are::
|
|
800
|
+
|
|
801
|
+
* NotStarted
|
|
802
|
+
* InProgress
|
|
803
|
+
* Completed
|
|
804
|
+
* OnHold
|
|
774
805
|
:type status: str
|
|
775
806
|
"""
|
|
776
807
|
project, folder = self.controller.get_project_folder(
|
|
@@ -1084,8 +1115,10 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
1084
1115
|
|
|
1085
1116
|
:param project: project name or folder path (e.g., "project1/folder1")
|
|
1086
1117
|
:type project: str
|
|
1118
|
+
|
|
1087
1119
|
:param image_name: image name
|
|
1088
1120
|
:type image_name: str
|
|
1121
|
+
|
|
1089
1122
|
:param local_dir_path: local directory path to download to
|
|
1090
1123
|
:type local_dir_path: Path-like (str or Path)
|
|
1091
1124
|
|
|
@@ -1111,6 +1144,7 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
1111
1144
|
|
|
1112
1145
|
:param project: project name
|
|
1113
1146
|
:type project: str
|
|
1147
|
+
|
|
1114
1148
|
:param return_metadata: return metadata of images instead of names
|
|
1115
1149
|
:type return_metadata: bool
|
|
1116
1150
|
|
|
@@ -1136,16 +1170,21 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
1136
1170
|
|
|
1137
1171
|
:param project: project name
|
|
1138
1172
|
:type project: str
|
|
1173
|
+
|
|
1139
1174
|
:param folder_names: names of folders to include in the export. If None, whole project will be exported
|
|
1140
1175
|
:type folder_names: list of str
|
|
1176
|
+
|
|
1141
1177
|
:param annotation_statuses: images with which status to include, if None,
|
|
1142
|
-
["NotStarted", "InProgress", "QualityCheck", "Returned", "Completed", "Skipped"] will be
|
|
1178
|
+
["NotStarted", "InProgress", "QualityCheck", "Returned", "Completed", "Skipped"] will be chosen
|
|
1143
1179
|
list elements should be one of NotStarted InProgress QualityCheck Returned Completed Skipped
|
|
1144
1180
|
:type annotation_statuses: list of strs
|
|
1181
|
+
|
|
1145
1182
|
:param include_fuse: enables fuse images in the export
|
|
1146
1183
|
:type include_fuse: bool
|
|
1184
|
+
|
|
1147
1185
|
:param only_pinned: enable only pinned output in export. This option disables all other types of output.
|
|
1148
1186
|
:type only_pinned: bool
|
|
1187
|
+
|
|
1149
1188
|
:param kwargs: Arbitrary kwarg ``integration_name``
|
|
1150
1189
|
can be provided which will be used as a storage to store export file
|
|
1151
1190
|
|
|
@@ -1207,26 +1246,36 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
1207
1246
|
|
|
1208
1247
|
:param project: project name or folder path (e.g., "project1/folder1")
|
|
1209
1248
|
:type project: str
|
|
1249
|
+
|
|
1210
1250
|
:param folder_path: from which folder to upload the videos
|
|
1211
1251
|
:type folder_path: Path-like (str or Path)
|
|
1252
|
+
|
|
1212
1253
|
:param extensions: tuple or list of filename extensions to include from folder
|
|
1213
1254
|
:type extensions: tuple or list of strs
|
|
1255
|
+
|
|
1214
1256
|
:param exclude_file_patterns: filename patterns to exclude from uploading
|
|
1215
1257
|
:type exclude_file_patterns: listlike of strs
|
|
1258
|
+
|
|
1216
1259
|
:param recursive_subfolders: enable recursive subfolder parsing
|
|
1217
1260
|
:type recursive_subfolders: bool
|
|
1261
|
+
|
|
1218
1262
|
:param target_fps: how many frames per second need to extract from the video (approximate).
|
|
1219
1263
|
If None, all frames will be uploaded
|
|
1220
1264
|
:type target_fps: float
|
|
1265
|
+
|
|
1221
1266
|
:param start_time: Time (in seconds) from which to start extracting frames
|
|
1222
1267
|
:type start_time: float
|
|
1268
|
+
|
|
1223
1269
|
:param end_time: Time (in seconds) up to which to extract frames. If None up to end
|
|
1224
1270
|
:type end_time: float
|
|
1271
|
+
|
|
1225
1272
|
:param annotation_status: value to set the annotation statuses of the uploaded images
|
|
1226
1273
|
NotStarted InProgress QualityCheck Returned Completed Skipped
|
|
1227
1274
|
:type annotation_status: str
|
|
1275
|
+
|
|
1228
1276
|
:param image_quality_in_editor: image quality be seen in SuperAnnotate web annotation editor.
|
|
1229
|
-
|
|
1277
|
+
Can be either "compressed" or "original".
|
|
1278
|
+
If None then the default value in project settings will be used.
|
|
1230
1279
|
:type image_quality_in_editor: str
|
|
1231
1280
|
|
|
1232
1281
|
:return: uploaded and not-uploaded video frame images' filenames
|
|
@@ -1285,18 +1334,24 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
1285
1334
|
|
|
1286
1335
|
:param project: project name or folder path (e.g., "project1/folder1")
|
|
1287
1336
|
:type project: str
|
|
1337
|
+
|
|
1288
1338
|
:param video_path: video to upload
|
|
1289
1339
|
:type video_path: Path-like (str or Path)
|
|
1340
|
+
|
|
1290
1341
|
:param target_fps: how many frames per second need to extract from the video (approximate).
|
|
1291
1342
|
If None, all frames will be uploaded
|
|
1292
1343
|
:type target_fps: float
|
|
1344
|
+
|
|
1293
1345
|
:param start_time: Time (in seconds) from which to start extracting frames
|
|
1294
1346
|
:type start_time: float
|
|
1347
|
+
|
|
1295
1348
|
:param end_time: Time (in seconds) up to which to extract frames. If None up to end
|
|
1296
1349
|
:type end_time: float
|
|
1350
|
+
|
|
1297
1351
|
:param annotation_status: value to set the annotation statuses of the uploaded
|
|
1298
1352
|
video frames NotStarted InProgress QualityCheck Returned Completed Skipped
|
|
1299
1353
|
:type annotation_status: str
|
|
1354
|
+
|
|
1300
1355
|
:param image_quality_in_editor: image quality be seen in SuperAnnotate web annotation editor.
|
|
1301
1356
|
Can be either "compressed" or "original".
|
|
1302
1357
|
If None then the default value in project settings will be used.
|
|
@@ -1342,11 +1397,20 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
1342
1397
|
:type color: str
|
|
1343
1398
|
|
|
1344
1399
|
:param attribute_groups: list of attribute group dicts.
|
|
1345
|
-
The values for the "group_type" key are
|
|
1346
|
-
|
|
1347
|
-
|
|
1400
|
+
The values for the "group_type" key are
|
|
1401
|
+
::
|
|
1402
|
+
|
|
1403
|
+
* radio
|
|
1404
|
+
* checklist
|
|
1405
|
+
* checklist
|
|
1406
|
+
* text
|
|
1407
|
+
* numeric
|
|
1408
|
+
* ocr
|
|
1409
|
+
|
|
1410
|
+
`ocr` and `group_type` keys are only available for Vector projects.
|
|
1411
|
+
Mandatory keys for each attribute group are::
|
|
1348
1412
|
|
|
1349
|
-
-
|
|
1413
|
+
- "name"
|
|
1350
1414
|
:type attribute_groups: list of dicts
|
|
1351
1415
|
|
|
1352
1416
|
:param class_type: class type. Should be either "object" or "tag". Document project type can also have "relationship" type of classes.
|
|
@@ -1444,6 +1508,7 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
1444
1508
|
|
|
1445
1509
|
:param project: project name
|
|
1446
1510
|
:type project: str
|
|
1511
|
+
|
|
1447
1512
|
:param annotation_class: annotation class name or metadata
|
|
1448
1513
|
:type annotation_class: str or dict
|
|
1449
1514
|
"""
|
|
@@ -1471,6 +1536,7 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
1471
1536
|
|
|
1472
1537
|
:param project: project name
|
|
1473
1538
|
:type project: str
|
|
1539
|
+
|
|
1474
1540
|
:param folder: folder to download to
|
|
1475
1541
|
:type folder: Path-like (str or Path)
|
|
1476
1542
|
|
|
@@ -1497,8 +1563,10 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
1497
1563
|
|
|
1498
1564
|
:param project: project name
|
|
1499
1565
|
:type project: str
|
|
1566
|
+
|
|
1500
1567
|
:param classes_json: JSON itself or path to the JSON file
|
|
1501
1568
|
:type classes_json: list or Path-like (str or Path)
|
|
1569
|
+
|
|
1502
1570
|
:param from_s3_bucket: AWS S3 bucket to use. If None then classes_json is in local filesystem
|
|
1503
1571
|
:type from_s3_bucket: str
|
|
1504
1572
|
|
|
@@ -1542,13 +1610,17 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
1542
1610
|
|
|
1543
1611
|
:param project: project name
|
|
1544
1612
|
:type project: str
|
|
1613
|
+
|
|
1545
1614
|
:param export: export name
|
|
1546
|
-
:type export: str
|
|
1615
|
+
:type export: str or dict
|
|
1616
|
+
|
|
1547
1617
|
:param folder_path: where to download the export
|
|
1548
1618
|
:type folder_path: Path-like (str or Path)
|
|
1619
|
+
|
|
1549
1620
|
:param extract_zip_contents: if False then a zip file will be downloaded,
|
|
1550
1621
|
if True the zip file will be extracted at folder_path
|
|
1551
1622
|
:type extract_zip_contents: bool
|
|
1623
|
+
|
|
1552
1624
|
:param to_s3_bucket: AWS S3 bucket to use for download. If None then folder_path is in local filesystem.
|
|
1553
1625
|
:type to_s3_bucket: Bucket object
|
|
1554
1626
|
"""
|
|
@@ -1572,11 +1644,11 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
1572
1644
|
|
|
1573
1645
|
new_workflow example: [{ "step" : <step_num>, "className" : <annotation_class>, "tool" : <tool_num>,
|
|
1574
1646
|
"attribute":[{"attribute" : {"name" : <attribute_value>, "attribute_group" : {"name": <attribute_group>}}},
|
|
1575
|
-
...]
|
|
1576
|
-
},...]
|
|
1647
|
+
...]},...]
|
|
1577
1648
|
|
|
1578
1649
|
:param project: project name or metadata
|
|
1579
1650
|
:type project: str or dict
|
|
1651
|
+
|
|
1580
1652
|
:param new_workflow: new workflow list of dicts
|
|
1581
1653
|
:type new_workflow: list of dicts
|
|
1582
1654
|
"""
|
|
@@ -1600,16 +1672,22 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
1600
1672
|
|
|
1601
1673
|
:param project: project name or folder path (e.g., "project1/folder1")
|
|
1602
1674
|
:type project: str
|
|
1675
|
+
|
|
1603
1676
|
:param image_name: image name
|
|
1604
1677
|
:type image_name: str
|
|
1678
|
+
|
|
1605
1679
|
:param local_dir_path: where to download the image
|
|
1606
1680
|
:type local_dir_path: Path-like (str or Path)
|
|
1681
|
+
|
|
1607
1682
|
:param include_annotations: enables annotation download with the image
|
|
1608
1683
|
:type include_annotations: bool
|
|
1684
|
+
|
|
1609
1685
|
:param include_fuse: enables fuse image download with the image
|
|
1610
1686
|
:type include_fuse: bool
|
|
1687
|
+
|
|
1611
1688
|
:param include_overlay: enables overlay image download with the image
|
|
1612
1689
|
:type include_overlay: bool
|
|
1690
|
+
|
|
1613
1691
|
:param variant: which resolution to download, can be 'original' or 'lores'
|
|
1614
1692
|
(low resolution used in web editor)
|
|
1615
1693
|
:type variant: str
|
|
@@ -1828,8 +1906,10 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
1828
1906
|
|
|
1829
1907
|
:param model: the model that needs to be downloaded
|
|
1830
1908
|
:type model: dict
|
|
1909
|
+
|
|
1831
1910
|
:param output_dir: the directory in which the files will be saved
|
|
1832
1911
|
:type output_dir: str
|
|
1912
|
+
|
|
1833
1913
|
:return: the metadata of the model
|
|
1834
1914
|
:rtype: dict
|
|
1835
1915
|
"""
|
|
@@ -1891,10 +1971,13 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
1891
1971
|
|
|
1892
1972
|
:param project: the project in which the target images are uploaded.
|
|
1893
1973
|
:type project: str or dict
|
|
1974
|
+
|
|
1894
1975
|
:param images_list: the list of image names on which smart prediction has to be run
|
|
1895
1976
|
:type images_list: list of str
|
|
1977
|
+
|
|
1896
1978
|
:param model: the name of the model that should be used for running smart prediction
|
|
1897
1979
|
:type model: str or dict
|
|
1980
|
+
|
|
1898
1981
|
:return: tuple of two lists, list of images on which the prediction has succeeded and failed respectively
|
|
1899
1982
|
:rtype: tuple
|
|
1900
1983
|
"""
|
|
@@ -1933,16 +2016,21 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
1933
2016
|
|
|
1934
2017
|
:param project: project name or folder path (e.g., "project1/folder1")
|
|
1935
2018
|
:type project: str
|
|
2019
|
+
|
|
1936
2020
|
:param img: image to upload
|
|
1937
2021
|
:type img: io.BytesIO() or Path-like (str or Path)
|
|
2022
|
+
|
|
1938
2023
|
:param image_name: image name to set on platform. If None and img is filepath,
|
|
1939
2024
|
image name will be set to filename of the path
|
|
1940
2025
|
:type image_name: str
|
|
2026
|
+
|
|
1941
2027
|
:param annotation_status: value to set the annotation statuses of the uploaded image
|
|
1942
2028
|
NotStarted InProgress QualityCheck Returned Completed Skipped
|
|
1943
2029
|
:type annotation_status: str
|
|
2030
|
+
|
|
1944
2031
|
:param from_s3_bucket: AWS S3 bucket to use. If None then folder_path is in local filesystem
|
|
1945
2032
|
:type from_s3_bucket: str
|
|
2033
|
+
|
|
1946
2034
|
:param image_quality_in_editor: image quality be seen in SuperAnnotate web annotation editor.
|
|
1947
2035
|
Can be either "compressed" or "original".
|
|
1948
2036
|
If None then the default value in project settings will be used.
|
|
@@ -2022,13 +2110,24 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
2022
2110
|
|
|
2023
2111
|
:param project: project name or folder path (e.g., "project1/folder1")
|
|
2024
2112
|
:type project: str
|
|
2113
|
+
|
|
2025
2114
|
:param img_paths: list of Path-like (str or Path) objects to upload
|
|
2026
2115
|
:type img_paths: list
|
|
2116
|
+
|
|
2027
2117
|
:param annotation_status: value to set the annotation statuses of the uploaded images
|
|
2028
|
-
|
|
2118
|
+
Available statuses are::
|
|
2119
|
+
|
|
2120
|
+
* NotStarted
|
|
2121
|
+
* InProgress
|
|
2122
|
+
* QualityCheck
|
|
2123
|
+
* Returned
|
|
2124
|
+
* Completed
|
|
2125
|
+
* Skipped
|
|
2029
2126
|
:type annotation_status: str
|
|
2127
|
+
|
|
2030
2128
|
:param from_s3_bucket: AWS S3 bucket to use. If None then folder_path is in local filesystem
|
|
2031
2129
|
:type from_s3_bucket: str
|
|
2130
|
+
|
|
2032
2131
|
:param image_quality_in_editor: image quality be seen in SuperAnnotate web annotation editor.
|
|
2033
2132
|
Can be either "compressed" or "original".
|
|
2034
2133
|
If None then the default value in project settings will be used.
|
|
@@ -2048,26 +2147,21 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
2048
2147
|
from_s3_bucket=from_s3_bucket,
|
|
2049
2148
|
)
|
|
2050
2149
|
|
|
2051
|
-
images_to_upload,
|
|
2052
|
-
if len(duplicates):
|
|
2053
|
-
logger.warning(
|
|
2054
|
-
"%s already existing images found that won't be uploaded.",
|
|
2055
|
-
len(duplicates),
|
|
2056
|
-
)
|
|
2150
|
+
images_to_upload, existing_items = use_case.images_to_upload
|
|
2057
2151
|
logger.info(f"Uploading {len(images_to_upload)} images to project {project}.")
|
|
2058
|
-
uploaded, failed_images
|
|
2152
|
+
uploaded, failed_images = [], []
|
|
2059
2153
|
if not images_to_upload:
|
|
2060
|
-
return uploaded, failed_images,
|
|
2154
|
+
return uploaded, failed_images, existing_items
|
|
2061
2155
|
if use_case.is_valid():
|
|
2062
2156
|
with tqdm(
|
|
2063
2157
|
total=len(images_to_upload), desc="Uploading images"
|
|
2064
2158
|
) as progress_bar:
|
|
2065
2159
|
for _ in use_case.execute():
|
|
2066
2160
|
progress_bar.update(1)
|
|
2067
|
-
uploaded, failed_images,
|
|
2068
|
-
if
|
|
2069
|
-
logger.info(f"
|
|
2070
|
-
return uploaded, failed_images,
|
|
2161
|
+
uploaded, failed_images, existing_items = use_case.data
|
|
2162
|
+
if existing_items:
|
|
2163
|
+
logger.info(f"Existing images {', '.join(existing_items)}")
|
|
2164
|
+
return uploaded, failed_images, existing_items
|
|
2071
2165
|
raise AppException(use_case.response.errors)
|
|
2072
2166
|
|
|
2073
2167
|
def aggregate_annotations_as_df(
|
|
@@ -2085,7 +2179,7 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
2085
2179
|
:type project_type: str
|
|
2086
2180
|
|
|
2087
2181
|
:param folder_names: Aggregate the specified folders from project_root.
|
|
2088
|
-
If None
|
|
2182
|
+
If None aggregates all folders in the project_root
|
|
2089
2183
|
:type folder_names: list of Pathlike (str or Path) objects
|
|
2090
2184
|
|
|
2091
2185
|
:return: DataFrame on annotations
|
|
@@ -2205,20 +2299,28 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
2205
2299
|
return response.data
|
|
2206
2300
|
|
|
2207
2301
|
def get_annotations(
|
|
2208
|
-
self,
|
|
2302
|
+
self,
|
|
2303
|
+
project: Union[NotEmptyStr, int],
|
|
2304
|
+
items: Optional[Union[List[NotEmptyStr], List[int]]] = None,
|
|
2209
2305
|
):
|
|
2210
2306
|
"""Returns annotations for the given list of items.
|
|
2211
2307
|
|
|
2212
|
-
:param project: project name or folder path (e.g., “project1/folder1”).
|
|
2213
|
-
:type project: str
|
|
2308
|
+
:param project: project id or project name or folder path (e.g., “project1/folder1”).
|
|
2309
|
+
:type project: str or int
|
|
2214
2310
|
|
|
2215
2311
|
:param items: item names. If None, all the items in the specified directory will be used.
|
|
2216
|
-
:type items: list of strs
|
|
2312
|
+
:type items: list of strs or list of ints
|
|
2217
2313
|
|
|
2218
2314
|
:return: list of annotations
|
|
2219
|
-
:rtype: list of
|
|
2315
|
+
:rtype: list of dict
|
|
2220
2316
|
"""
|
|
2221
|
-
project,
|
|
2317
|
+
if isinstance(project, str):
|
|
2318
|
+
project, folder = self.controller.get_project_folder_by_path(project)
|
|
2319
|
+
else:
|
|
2320
|
+
project, folder = (
|
|
2321
|
+
self.controller.get_project_by_id(project_id=project).data,
|
|
2322
|
+
None,
|
|
2323
|
+
)
|
|
2222
2324
|
response = self.controller.annotations.list(project, folder, items)
|
|
2223
2325
|
if response.errors:
|
|
2224
2326
|
raise AppException(response.errors)
|
|
@@ -2436,15 +2538,15 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
2436
2538
|
If None, all items returned, in accordance with the recursive=False parameter.
|
|
2437
2539
|
:type name_contains: str
|
|
2438
2540
|
|
|
2439
|
-
:param annotation_status: if not None, filters items by annotation status.
|
|
2440
|
-
|
|
2541
|
+
:param annotation_status: if not None, filters items by annotation status. \n
|
|
2542
|
+
Available statuses are::
|
|
2441
2543
|
|
|
2442
|
-
|
|
2443
|
-
|
|
2444
|
-
|
|
2445
|
-
|
|
2446
|
-
|
|
2447
|
-
|
|
2544
|
+
* NotStarted
|
|
2545
|
+
* InProgress
|
|
2546
|
+
* QualityCheck
|
|
2547
|
+
* Returned
|
|
2548
|
+
* Completed
|
|
2549
|
+
* Skipped
|
|
2448
2550
|
:type annotation_status: str
|
|
2449
2551
|
|
|
2450
2552
|
:param annotator_email: returns those items’ names that are assigned to the specified annotator.
|
|
@@ -2539,13 +2641,15 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
2539
2641
|
:param attachments: path to CSV file or list of dicts containing attachments URLs.
|
|
2540
2642
|
:type attachments: path-like (str or Path) or list of dicts
|
|
2541
2643
|
|
|
2542
|
-
:param annotation_status: value to set the annotation statuses of the linked items
|
|
2543
|
-
|
|
2544
|
-
|
|
2545
|
-
|
|
2546
|
-
|
|
2547
|
-
|
|
2548
|
-
|
|
2644
|
+
:param annotation_status: value to set the annotation statuses of the linked items. \n
|
|
2645
|
+
Available statuses are::
|
|
2646
|
+
|
|
2647
|
+
* NotStarted
|
|
2648
|
+
* InProgress
|
|
2649
|
+
* QualityCheck
|
|
2650
|
+
* Returned
|
|
2651
|
+
* Completed
|
|
2652
|
+
* Skipped
|
|
2549
2653
|
:type annotation_status: str
|
|
2550
2654
|
|
|
2551
2655
|
:return: uploaded, failed and duplicated item names
|
|
@@ -2553,26 +2657,27 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
2553
2657
|
|
|
2554
2658
|
Example:
|
|
2555
2659
|
::
|
|
2660
|
+
|
|
2556
2661
|
client = SAClient()
|
|
2557
2662
|
client.attach_items(
|
|
2558
|
-
project
|
|
2559
|
-
attachments
|
|
2560
|
-
|
|
2663
|
+
project="Medical Annotations",
|
|
2664
|
+
attachments=[{"name": "item", "url": "https://..."}]
|
|
2665
|
+
)
|
|
2561
2666
|
|
|
2562
2667
|
Example of attaching items from custom integration:
|
|
2563
2668
|
::
|
|
2669
|
+
|
|
2564
2670
|
client = SAClient()
|
|
2565
2671
|
client.attach_items(
|
|
2566
|
-
project
|
|
2567
|
-
attachments
|
|
2672
|
+
project="Medical Annotations",
|
|
2673
|
+
attachments=[
|
|
2568
2674
|
{
|
|
2569
2675
|
"name": "item",
|
|
2570
|
-
"url": "https://
|
|
2571
|
-
"integration": "custom-integration"
|
|
2676
|
+
"url": "https://bucket-name.s3…/example.png"
|
|
2677
|
+
"integration": "custom-integration-name"
|
|
2572
2678
|
}
|
|
2573
2679
|
]
|
|
2574
2680
|
)
|
|
2575
|
-
|
|
2576
2681
|
"""
|
|
2577
2682
|
|
|
2578
2683
|
project_name, folder_name = extract_project_folder(project)
|
|
@@ -2736,13 +2841,15 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
2736
2841
|
:param project: project name or folder path (e.g., “project1/folder1”).
|
|
2737
2842
|
:type project: str
|
|
2738
2843
|
|
|
2739
|
-
:param annotation_status: annotation status to set
|
|
2740
|
-
|
|
2741
|
-
|
|
2742
|
-
|
|
2743
|
-
|
|
2744
|
-
|
|
2745
|
-
|
|
2844
|
+
:param annotation_status: annotation status to set. \n
|
|
2845
|
+
Available statuses are::
|
|
2846
|
+
|
|
2847
|
+
* NotStarted
|
|
2848
|
+
* InProgress
|
|
2849
|
+
* QualityCheck
|
|
2850
|
+
* Returned
|
|
2851
|
+
* Completed
|
|
2852
|
+
* Skipped
|
|
2746
2853
|
:type annotation_status: str
|
|
2747
2854
|
|
|
2748
2855
|
:param items: item names. If None, all the items in the specified directory will be used.
|
|
@@ -3214,10 +3321,12 @@ class SAClient(BaseInterfaceFacade, metaclass=TrackableMeta):
|
|
|
3214
3321
|
:param project: project name or folder path (e.g., “project1/folder1”).
|
|
3215
3322
|
:type project: str
|
|
3216
3323
|
|
|
3217
|
-
:param approval_status: approval status to set
|
|
3218
|
-
|
|
3219
|
-
|
|
3220
|
-
|
|
3324
|
+
:param approval_status: approval status to set. \n
|
|
3325
|
+
Available statuses are::
|
|
3326
|
+
|
|
3327
|
+
* None
|
|
3328
|
+
* Approved
|
|
3329
|
+
* Disapproved
|
|
3221
3330
|
:type approval_status: str
|
|
3222
3331
|
|
|
3223
3332
|
:param items: item names to set the mentioned status for. If None, all the items in the project will be used.
|
{superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/entities/project.py
RENAMED
|
@@ -70,7 +70,7 @@ class SettingEntity(BaseModel):
|
|
|
70
70
|
id: Optional[int]
|
|
71
71
|
project_id: Optional[int]
|
|
72
72
|
attribute: str
|
|
73
|
-
value: Union[StrictStr, StrictInt, StrictFloat, StrictBool]
|
|
73
|
+
value: Union[StrictStr, StrictInt, StrictFloat, StrictBool] # todo set any
|
|
74
74
|
|
|
75
75
|
class Config:
|
|
76
76
|
extra = Extra.ignore
|
{superannotate-4.4.19b2 → superannotate-4.4.20.dev1}/src/superannotate/lib/core/serviceproviders.py
RENAMED
|
@@ -246,6 +246,14 @@ class BaseItemService(SuperannotateServiceProvider):
|
|
|
246
246
|
) -> ServiceResponse:
|
|
247
247
|
raise NotImplementedError
|
|
248
248
|
|
|
249
|
+
@abstractmethod
|
|
250
|
+
def list_by_ids(
|
|
251
|
+
self,
|
|
252
|
+
project: entities.ProjectEntity,
|
|
253
|
+
ids: List[int],
|
|
254
|
+
) -> ServiceResponse:
|
|
255
|
+
raise NotImplementedError
|
|
256
|
+
|
|
249
257
|
@abstractmethod
|
|
250
258
|
def attach(
|
|
251
259
|
self,
|