Skip to content

Commit a3dae48

Browse files
committed
Added friday-900
1 parent ef3080c commit a3dae48

File tree

8 files changed

+103
-15
lines changed

8 files changed

+103
-15
lines changed

src/superannotate/lib/app/serializers.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ def _serialize(
6262
return entity.dict(by_alias=by_alias, exclude=exclude)
6363
return entity.to_dict()
6464

65+
6566
@classmethod
6667
def serialize_iterable(
6768
cls,

src/superannotate/lib/core/usecases/items.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from lib.core.entities import ProjectEntity
1212
from lib.core.entities import TmpBaseEntity
1313
from lib.core.entities import TmpImageEntity
14+
from lib.core.entities import VideoEntity
1415
from lib.core.exceptions import AppException
1516
from lib.core.exceptions import AppValidationException
1617
from lib.core.exceptions import BackendError
@@ -53,8 +54,7 @@ def serialize_entity(entity: Entity, project: ProjectEntity):
5354
tmp_entity.segmentation_status = None
5455
return TmpImageEntity(**tmp_entity.dict(by_alias=True))
5556
elif project.type == constances.ProjectType.VIDEO.value:
56-
return
57-
57+
return VideoEntity(**entity.dict(by_alias=True))
5858
elif project.type == constances.ProjectType.DOCUMENT.value:
5959
return DocumentEntity(**entity.dict(by_alias=True))
6060
return entity

src/superannotate/lib/core/usecases/projects.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -185,13 +185,13 @@ def validate_settings(self):
185185
setting.value = constances.ImageQuality.get_value(setting.value)
186186
elif setting.attribute == "FrameRate":
187187
if not self._project.type == constances.ProjectType.VIDEO.value:
188-
raise AppValidationException("FrameMode is available only for Video projects")
188+
raise AppValidationException("FrameRate is available only for Video projects")
189189
if isinstance(setting.value, (float, int)):
190190
if not (0.0001 < setting.value < 120) or decimal.Decimal(
191191
str(setting.value)).as_tuple().exponent < -3:
192-
raise AppValidationException("The FrameMode value range is between 0.001 - 120")
192+
raise AppValidationException("The FrameRate value range is between 0.001 - 120")
193193
else:
194-
raise AppValidationException("The FrameMode value should be float")
194+
raise AppValidationException("The FrameRate value should be float")
195195

196196
def validate_project_name(self):
197197
if (

src/superannotate/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "4.3.3dev5"
1+
__version__ = "4.3.3dev6"

tests/integration/annotations/test_annotation_upload_pixel.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
import os
22
from os.path import join
33
from pathlib import Path
4-
import json
54
from unittest.mock import patch
65

76
import src.superannotate as sa
87
from tests.integration.base import BaseTestCase
98

10-
import tempfile
119
import pytest
1210

1311

@@ -28,7 +26,7 @@ def inject_fixtures(self, caplog):
2826
def folder_path(self):
2927
return os.path.join(Path(__file__).parent.parent.parent, self.TEST_FOLDER_PATH)
3028

31-
@pytest.mark.flaky(reruns=2)
29+
@pytest.mark.flaky(reruns=4)
3230
@patch("lib.core.usecases.annotations.UploadAnnotationUseCase.s3_bucket")
3331
def test_recursive_annotation_upload_pixel(self, s3_bucket):
3432
sa.create_folder(self.PROJECT_NAME, self.FOLDER)

tests/integration/items/test_attach_items.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
import src.superannotate as sa
55
from tests.integration.base import BaseTestCase
66

7-
import pytest
8-
97

108
class TestAttachItemsVector(BaseTestCase):
119
PROJECT_NAME = "TestAttachItemsVector"

tests/integration/items/test_get_item_metadata.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,29 @@ def test_get_item_metadata(self):
6161
assert item_metadata["prediction_status"] == "NotStarted"
6262
assert item_metadata["segmentation_status"] == "NotStarted"
6363
assert item_metadata["annotation_status"] == "InProgress"
64+
65+
66+
class TestGetEntityMetadataVideo(BaseTestCase):
67+
PROJECT_NAME = "TestGetEntityMetadataVideo"
68+
PROJECT_DESCRIPTION = "TestGetEntityMetadataVideo"
69+
PROJECT_TYPE = "Video"
70+
TEST_FOLDER_PATH = "data_set/sample_project_vector"
71+
ITEM_NAME = "example_image_1.jpg"
72+
73+
@property
74+
def folder_path(self):
75+
return os.path.join(Path(__file__).parent.parent.parent, self.TEST_FOLDER_PATH)
76+
77+
def test_get_item_metadata(self):
78+
sa.attach_items(
79+
self.PROJECT_NAME, [
80+
{
81+
"url": "https://drive.google.com/uc?export=download&id=1vwfCpTzcjxoEA4hhDxqapPOVvLVeS7ZS",
82+
"name": self.ITEM_NAME
83+
}
84+
]
85+
)
86+
item_metadata = sa.get_item_metadata(self.PROJECT_NAME, self.ITEM_NAME)
87+
assert item_metadata["path"] == f"{self.PROJECT_NAME}/{self.ITEM_NAME}"
88+
assert "prediction_status" not in item_metadata
89+
assert "segmentation_status" not in item_metadata

tests/integration/settings/test_settings.py

Lines changed: 69 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
import src.superannotate as sa
21
from unittest import TestCase
32

3+
import src.superannotate as sa
4+
from src.superannotate import AppException
5+
46

5-
class TestSettings(TestCase):
7+
class BaseTestCase(TestCase):
68
PROJECT_NAME = "TestSettings"
79
SECOND_PROJECT_NAME = "SecondTestSettings"
810
PROJECT_DESCRIPTION = "TestSettings"
9-
PROJECT_TYPE = "Vector"
1011

1112
def setUp(self) -> None:
1213
self.tearDown()
@@ -23,6 +24,12 @@ def tearDown(self) -> None:
2324
except Exception as e:
2425
print(str(e))
2526

27+
28+
class TestSettings(BaseTestCase):
29+
PROJECT_NAME = "TestSettings"
30+
SECOND_PROJECT_NAME = "SecondTestSettings"
31+
PROJECT_TYPE = "Vector"
32+
2633
def test_create_project_with_empty_settings(self):
2734
sa.create_project(
2835
self.PROJECT_NAME,
@@ -84,4 +91,62 @@ def test_clone_project(self):
8491
assert setting["value"] == "original"
8592
break
8693
else:
87-
raise Exception("Test failed")
94+
raise Exception("Test failed")
95+
96+
def test_frame_rate_invalid_range_value(self):
97+
with self.assertRaisesRegexp(AppException, "FrameRate is available only for Video projects"):
98+
sa.create_project(
99+
self.PROJECT_NAME,
100+
self.PROJECT_DESCRIPTION,
101+
self.PROJECT_TYPE,
102+
[{"attribute": "FrameRate", "value": 1.0}])
103+
104+
105+
class TestVideoSettings(BaseTestCase):
106+
PROJECT_NAME = "TestVideoSettings"
107+
SECOND_PROJECT_NAME = "TestVideoSettings"
108+
PROJECT_TYPE = "Video"
109+
110+
def test_frame_rate(self):
111+
sa.create_project(
112+
self.PROJECT_NAME,
113+
self.PROJECT_DESCRIPTION,
114+
self.PROJECT_TYPE,
115+
[{"attribute": "FrameRate", "value": 1}])
116+
settings = sa.get_project_settings(self.SECOND_PROJECT_NAME)
117+
for setting in settings:
118+
if setting["attribute"] == "FrameRate":
119+
assert setting["value"] == 1
120+
break
121+
else:
122+
raise Exception("Test failed")
123+
124+
def test_frame_rate_float(self):
125+
sa.create_project(
126+
self.PROJECT_NAME,
127+
self.PROJECT_DESCRIPTION,
128+
self.PROJECT_TYPE,
129+
[{"attribute": "FrameRate", "value": 1.3}])
130+
settings = sa.get_project_settings(self.SECOND_PROJECT_NAME)
131+
for setting in settings:
132+
if setting["attribute"] == "FrameRate":
133+
assert setting["value"] == 1.3
134+
break
135+
else:
136+
raise Exception("Test failed")
137+
138+
def test_frame_rate_invalid_range_value(self):
139+
with self.assertRaisesRegexp(AppException, "The FrameRate value range is between 0.001 - 120"):
140+
sa.create_project(
141+
self.PROJECT_NAME,
142+
self.PROJECT_DESCRIPTION,
143+
self.PROJECT_TYPE,
144+
[{"attribute": "FrameRate", "value": 1.00003}])
145+
146+
def test_frame_rate_invalid_str_value(self):
147+
with self.assertRaisesRegexp(AppException, "The FrameRate value should be float"):
148+
sa.create_project(
149+
self.PROJECT_NAME,
150+
self.PROJECT_DESCRIPTION,
151+
self.PROJECT_TYPE,
152+
[{"attribute": "FrameRate", "value": "1"}])

0 commit comments

Comments
 (0)