Skip to content

Commit 51a4a18

Browse files
Vaghinak BasentsyanVaghinak Basentsyan
authored andcommitted
Added cli version command
1 parent 163063e commit 51a4a18

File tree

17 files changed

+319
-49
lines changed

17 files changed

+319
-49
lines changed

setup.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,8 @@
44

55

66
with open('src/superannotate/version.py') as f:
7-
Version = f.read()
7+
version = f.read().rstrip()[15:-1]
88

9-
Version = Version.rstrip()
10-
Version = Version[15:-1]
119

1210
with open('requirements.txt') as f:
1311
requirements = f.read()
@@ -27,7 +25,7 @@
2725

2826
setup(
2927
name='superannotate',
30-
version=Version,
28+
version=version,
3129
package_dir={"": "src"},
3230

3331
packages=find_packages(where="src"),
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
Metadata-Version: 2.1
2+
Name: superannotate
3+
Version: 5.0.0
4+
Summary: Python SDK to SuperAnnotate platform
5+
Home-page: https://github.com/superannotateai/superannotate-python-sdk
6+
Author: SuperAnnotate AI
7+
Author-email: hovnatan@superannotate.com
8+
License: MIT
9+
Platform: UNKNOWN
10+
Requires-Python: >=3.6
11+
Description-Content-Type: text/markdown
12+
License-File: LICENSE
13+
14+
# SuperAnnotate Python SDK
15+
16+
SuperAnnotate Python SDK allows access to the platform without
17+
web browser:
18+
19+
```python
20+
import superannotate as sa
21+
22+
sa.create_project("Example Project 1", "example", "Vector")
23+
24+
sa.upload_images_from_folder_to_project("Example Project 1", "<path_to_my_images_folder>")
25+
```
26+
27+
## Installation
28+
29+
SDK is available on PyPI:
30+
31+
```console
32+
pip install superannotate
33+
```
34+
35+
The package officially supports Python 3.6+ and was tested under Linux and
36+
Windows ([Anaconda](https://www.anaconda.com/products/individual#windows)) platforms.
37+
38+
For more detailed installation steps and package usage please have a look at the
39+
[tutorial](https://superannotate.readthedocs.io/en/stable/tutorial.sdk.html).
40+
41+
## Supported Features
42+
43+
- Search projects
44+
- Create/delete a project
45+
- Upload images to a project from a local or AWS S3 folder
46+
- Upload videos to a project from a local folder
47+
- Upload annotations/pre-annotations to a project from local or AWS S3 folder
48+
- Set the annotation status of the images being uploaded
49+
- Export annotations from a project to a local or AWS S3 folder
50+
- Share and unshare a project with a team contributor
51+
- Invite a team contributor
52+
- Search images in a project
53+
- Download a single image
54+
- Copy/move image between projects
55+
- Get image bytes (e.g., for numpy array creation)
56+
- Set image annotation status
57+
- Download image annotations/pre-annotations
58+
- Create/download project annotation classes
59+
- Convert annotation format from/to COCO
60+
- Convert annotation format from VOC, SuperVisely, LabelBox, DataLoop, VGG, VoTT, SageMaker, GoogleCloud, YOLO
61+
- Add annotations to images on platform
62+
- Add annotations to local SuperAnnotate format JSONs
63+
- CLI commands for simple tasks
64+
65+
## Full SDK reference, tutorial available on [Read the Docs](https://superannotate.readthedocs.io)
66+
67+
## License
68+
69+
This SDK is distributed under the MIT License, see [LICENSE](./LICENSE).
70+
71+
## Questions and Issues
72+
73+
For questions and issues please use this repo's issue tracker on GitHub.
74+
75+
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
LICENSE
2+
MANIFEST.in
3+
README.md
4+
requirements.txt
5+
setup.py
6+
src/superannotate/__init__.py
7+
src/superannotate/version.py
8+
src/superannotate.egg-info/PKG-INFO
9+
src/superannotate.egg-info/SOURCES.txt
10+
src/superannotate.egg-info/dependency_links.txt
11+
src/superannotate.egg-info/entry_points.txt
12+
src/superannotate.egg-info/requires.txt
13+
src/superannotate.egg-info/top_level.txt
14+
src/superannotate/lib/__init__.py
15+
src/superannotate/lib/app/__init__.py
16+
src/superannotate/lib/app/annotation_helpers.py
17+
src/superannotate/lib/app/common.py
18+
src/superannotate/lib/app/exceptions.py
19+
src/superannotate/lib/app/helpers.py
20+
src/superannotate/lib/app/serializers.py
21+
src/superannotate/lib/app/analytics/__init__.py
22+
src/superannotate/lib/app/analytics/class_analytics.py
23+
src/superannotate/lib/app/analytics/common.py
24+
src/superannotate/lib/app/bin/__init__.py
25+
src/superannotate/lib/app/bin/superannotate.py
26+
src/superannotate/lib/app/convertors/__init__.py
27+
src/superannotate/lib/app/convertors/baseStrategy.py
28+
src/superannotate/lib/app/convertors/df_converter.py
29+
src/superannotate/lib/app/convertors/dicom_converter.py
30+
src/superannotate/lib/app/convertors/coco_converters/__init__.py
31+
src/superannotate/lib/app/convertors/coco_converters/coco_api.py
32+
src/superannotate/lib/app/convertors/coco_converters/coco_converter.py
33+
src/superannotate/lib/app/convertors/coco_converters/coco_strategies.py
34+
src/superannotate/lib/app/convertors/coco_converters/coco_to_sa_pixel.py
35+
src/superannotate/lib/app/convertors/coco_converters/coco_to_sa_vector.py
36+
src/superannotate/lib/app/convertors/coco_converters/sa_pixel_to_coco.py
37+
src/superannotate/lib/app/convertors/coco_converters/sa_vector_to_coco.py
38+
src/superannotate/lib/app/convertors/dataloop_converters/__init__.py
39+
src/superannotate/lib/app/convertors/dataloop_converters/dataloop_helper.py
40+
src/superannotate/lib/app/convertors/dataloop_converters/dataloop_strategies.py
41+
src/superannotate/lib/app/convertors/dataloop_converters/dataloop_to_sa_vector.py
42+
src/superannotate/lib/app/convertors/googlecloud_converters/__init__.py
43+
src/superannotate/lib/app/convertors/googlecloud_converters/googlecloud_strategies.py
44+
src/superannotate/lib/app/convertors/googlecloud_converters/googlecloud_to_sa_vector.py
45+
src/superannotate/lib/app/convertors/labelbox_converters/__init__.py
46+
src/superannotate/lib/app/convertors/labelbox_converters/labelbox_helper.py
47+
src/superannotate/lib/app/convertors/labelbox_converters/labelbox_strategies.py
48+
src/superannotate/lib/app/convertors/labelbox_converters/labelbox_to_sa_pixel.py
49+
src/superannotate/lib/app/convertors/labelbox_converters/labelbox_to_sa_vector.py
50+
src/superannotate/lib/app/convertors/sagemaker_converters/__init__.py
51+
src/superannotate/lib/app/convertors/sagemaker_converters/sagemaker_strategies.py
52+
src/superannotate/lib/app/convertors/sagemaker_converters/sagemaker_to_sa_pixel.py
53+
src/superannotate/lib/app/convertors/sagemaker_converters/sagemaker_to_sa_vector.py
54+
src/superannotate/lib/app/convertors/supervisely_converters/__init__.py
55+
src/superannotate/lib/app/convertors/supervisely_converters/supervisely_helper.py
56+
src/superannotate/lib/app/convertors/supervisely_converters/supervisely_strategies.py
57+
src/superannotate/lib/app/convertors/supervisely_converters/supervisely_to_sa_pixel.py
58+
src/superannotate/lib/app/convertors/supervisely_converters/supervisely_to_sa_vector.py
59+
src/superannotate/lib/app/convertors/vgg_converters/__init__.py
60+
src/superannotate/lib/app/convertors/vgg_converters/vgg_helper.py
61+
src/superannotate/lib/app/convertors/vgg_converters/vgg_strategies.py
62+
src/superannotate/lib/app/convertors/vgg_converters/vgg_to_sa_vector.py
63+
src/superannotate/lib/app/convertors/voc_converters/__init__.py
64+
src/superannotate/lib/app/convertors/voc_converters/voc_helper.py
65+
src/superannotate/lib/app/convertors/voc_converters/voc_strategies.py
66+
src/superannotate/lib/app/convertors/voc_converters/voc_to_sa_pixel.py
67+
src/superannotate/lib/app/convertors/voc_converters/voc_to_sa_vector.py
68+
src/superannotate/lib/app/convertors/vott_converters/__init__.py
69+
src/superannotate/lib/app/convertors/vott_converters/vott_strategies.py
70+
src/superannotate/lib/app/convertors/vott_converters/vott_to_sa_vector.py
71+
src/superannotate/lib/app/convertors/yolo_converters/__init__.py
72+
src/superannotate/lib/app/convertors/yolo_converters/yolo_strategies.py
73+
src/superannotate/lib/app/convertors/yolo_converters/yolo_to_sa_vector.py
74+
src/superannotate/lib/app/input_converters/__init__.py
75+
src/superannotate/lib/app/input_converters/conversion.py
76+
src/superannotate/lib/app/input_converters/export_from_sa_conversions.py
77+
src/superannotate/lib/app/input_converters/import_to_sa_conversions.py
78+
src/superannotate/lib/app/input_converters/sa_conversion.py
79+
src/superannotate/lib/app/input_converters/converters/__init__.py
80+
src/superannotate/lib/app/input_converters/converters/baseStrategy.py
81+
src/superannotate/lib/app/input_converters/converters/converters.py
82+
src/superannotate/lib/app/input_converters/converters/sa_json_helper.py
83+
src/superannotate/lib/app/input_converters/converters/coco_converters/__init__.py
84+
src/superannotate/lib/app/input_converters/converters/coco_converters/coco_api.py
85+
src/superannotate/lib/app/input_converters/converters/coco_converters/coco_converter.py
86+
src/superannotate/lib/app/input_converters/converters/coco_converters/coco_strategies.py
87+
src/superannotate/lib/app/input_converters/converters/coco_converters/coco_to_sa_pixel.py
88+
src/superannotate/lib/app/input_converters/converters/coco_converters/coco_to_sa_vector.py
89+
src/superannotate/lib/app/input_converters/converters/coco_converters/sa_pixel_to_coco.py
90+
src/superannotate/lib/app/input_converters/converters/coco_converters/sa_vector_to_coco.py
91+
src/superannotate/lib/app/input_converters/converters/dataloop_converters/__init__.py
92+
src/superannotate/lib/app/input_converters/converters/dataloop_converters/dataloop_helper.py
93+
src/superannotate/lib/app/input_converters/converters/dataloop_converters/dataloop_strategies.py
94+
src/superannotate/lib/app/input_converters/converters/dataloop_converters/dataloop_to_sa_vector.py
95+
src/superannotate/lib/app/input_converters/converters/googlecloud_converters/__init__.py
96+
src/superannotate/lib/app/input_converters/converters/googlecloud_converters/googlecloud_strategies.py
97+
src/superannotate/lib/app/input_converters/converters/googlecloud_converters/googlecloud_to_sa_vector.py
98+
src/superannotate/lib/app/input_converters/converters/labelbox_converters/__init__.py
99+
src/superannotate/lib/app/input_converters/converters/labelbox_converters/labelbox_helper.py
100+
src/superannotate/lib/app/input_converters/converters/labelbox_converters/labelbox_strategies.py
101+
src/superannotate/lib/app/input_converters/converters/labelbox_converters/labelbox_to_sa_pixel.py
102+
src/superannotate/lib/app/input_converters/converters/labelbox_converters/labelbox_to_sa_vector.py
103+
src/superannotate/lib/app/input_converters/converters/sagemaker_converters/__init__.py
104+
src/superannotate/lib/app/input_converters/converters/sagemaker_converters/sagemaker_strategies.py
105+
src/superannotate/lib/app/input_converters/converters/sagemaker_converters/sagemaker_to_sa_pixel.py
106+
src/superannotate/lib/app/input_converters/converters/sagemaker_converters/sagemaker_to_sa_vector.py
107+
src/superannotate/lib/app/input_converters/converters/supervisely_converters/__init__.py
108+
src/superannotate/lib/app/input_converters/converters/supervisely_converters/supervisely_helper.py
109+
src/superannotate/lib/app/input_converters/converters/supervisely_converters/supervisely_strategies.py
110+
src/superannotate/lib/app/input_converters/converters/supervisely_converters/supervisely_to_sa_pixel.py
111+
src/superannotate/lib/app/input_converters/converters/supervisely_converters/supervisely_to_sa_vector.py
112+
src/superannotate/lib/app/input_converters/converters/vgg_converters/__init__.py
113+
src/superannotate/lib/app/input_converters/converters/vgg_converters/vgg_helper.py
114+
src/superannotate/lib/app/input_converters/converters/vgg_converters/vgg_strategies.py
115+
src/superannotate/lib/app/input_converters/converters/vgg_converters/vgg_to_sa_vector.py
116+
src/superannotate/lib/app/input_converters/converters/voc_converters/__init__.py
117+
src/superannotate/lib/app/input_converters/converters/voc_converters/voc_helper.py
118+
src/superannotate/lib/app/input_converters/converters/voc_converters/voc_strategies.py
119+
src/superannotate/lib/app/input_converters/converters/voc_converters/voc_to_sa_pixel.py
120+
src/superannotate/lib/app/input_converters/converters/voc_converters/voc_to_sa_vector.py
121+
src/superannotate/lib/app/input_converters/converters/vott_converters/__init__.py
122+
src/superannotate/lib/app/input_converters/converters/vott_converters/vott_strategies.py
123+
src/superannotate/lib/app/input_converters/converters/vott_converters/vott_to_sa_vector.py
124+
src/superannotate/lib/app/input_converters/converters/yolo_converters/__init__.py
125+
src/superannotate/lib/app/input_converters/converters/yolo_converters/yolo_strategies.py
126+
src/superannotate/lib/app/input_converters/converters/yolo_converters/yolo_to_sa_vector.py
127+
src/superannotate/lib/app/interface/__init__.py
128+
src/superannotate/lib/app/interface/base_interface.py
129+
src/superannotate/lib/app/interface/cli_interface.py
130+
src/superannotate/lib/app/interface/sdk_interface.py
131+
src/superannotate/lib/app/interface/sdk/__init__.py
132+
src/superannotate/lib/app/interface/sdk/folders.py
133+
src/superannotate/lib/app/interface/sdk/project.py
134+
src/superannotate/lib/app/superannotate/__init__.py
135+
src/superannotate/lib/core/__init__.py
136+
src/superannotate/lib/core/conditions.py
137+
src/superannotate/lib/core/entities.py
138+
src/superannotate/lib/core/enums.py
139+
src/superannotate/lib/core/exceptions.py
140+
src/superannotate/lib/core/plugin.py
141+
src/superannotate/lib/core/repositories.py
142+
src/superannotate/lib/core/response.py
143+
src/superannotate/lib/core/serviceproviders.py
144+
src/superannotate/lib/core/usecases.py
145+
src/superannotate/lib/infrastructure/__init__.py
146+
src/superannotate/lib/infrastructure/controller.py
147+
src/superannotate/lib/infrastructure/helpers.py
148+
src/superannotate/lib/infrastructure/repositories.py
149+
src/superannotate/lib/infrastructure/services.py
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[console_scripts]
2+
superannotatecli = superannotate.lib.app.bin.superannotate:main
3+
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
pydicom>=2.0.0
2+
boto3>=1.14.53
3+
requests>=2.25.1
4+
requests-toolbelt>=0.9.1
5+
tqdm>=4.48.2
6+
pillow>=7.2.0
7+
numpy>=1.19.0
8+
matplotlib>=3.3.1
9+
xmltodict>=0.12.0
10+
opencv-python>=4.4.0.42
11+
wheel>=0.35.1
12+
Cython>=0.29.21
13+
packaging>=20.4
14+
pandas>=1.1.2
15+
plotly>=4.1.0
16+
ffmpeg-python>=0.2.0
17+
google-cloud-storage>=1.33.0
18+
azure-storage-blob>=12.6.0
19+
fire==0.4.0
20+
Shapely>=1.7.1
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
superannotate

src/superannotate/__init__.py

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,3 @@
1-
from lib.app.interface.sdk_interface import init
2-
from lib.app.interface.sdk_interface import set_auth_token
3-
from lib.app.interface.sdk_interface import benchmark
4-
from lib.app.interface.sdk_interface import consensus
5-
from lib.app.interface.sdk_interface import delete_image
6-
from lib.app.interface.sdk_interface import delete_model
7-
from lib.app.interface.sdk_interface import get_annotation_class_metadata
8-
from lib.app.interface.sdk_interface import get_image_bytes
9-
from lib.app.interface.sdk_interface import get_image_preannotations
10-
from lib.app.interface.sdk_interface import get_project_default_image_quality_in_editor
11-
from lib.app.interface.sdk_interface import plot_model_metrics
12-
from lib.app.interface.sdk_interface import set_image_annotation_status
13-
from lib.app.interface.sdk_interface import stop_model_training
14-
from lib.app.interface.sdk_interface import upload_video_to_project
151
from superannotate.lib.app.analytics.class_analytics import aggregate_annotations_as_df
162
from superannotate.lib.app.analytics.class_analytics import attribute_distribution
173
from superannotate.lib.app.analytics.class_analytics import class_distribution

src/superannotate/lib/app/interface/sdk_interface.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -350,8 +350,6 @@ def get_project_and_folder_metadata(project):
350350
351351
:param project: project name or folder path (e.g., "project1/folder1")
352352
:type project: str
353-
:param folder_name: folder's name
354-
:type folder_name: str
355353
356354
:return: metadata of folder
357355
:rtype: dict
@@ -907,7 +905,7 @@ def delete_image(project, image_name):
907905
controller.delete_image(image_name=image_name, project_name=project_name)
908906

909907

910-
def get_image_metadata(project, image_name, return_dict_on_single_output=True):
908+
def get_image_metadata(project, image_name, *_, **__):
911909
"""Returns image metadata
912910
913911
:param project: project name or folder path (e.g., "project1/folder1")

src/superannotate/lib/core/enums.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ class UploadState(Enum):
4545

4646

4747
class ImageQuality(BaseTitledEnum):
48-
ORIGINAl = "original", 60
49-
COMPRESSED = "compressed", 100
48+
ORIGINAl = "original", 100
49+
COMPRESSED = "compressed", 60
5050

5151

5252
class ExportStatus(BaseTitledEnum):

0 commit comments

Comments
 (0)