Skip to content

Commit 2f4bb7d

Browse files
dshabinVaghinakDev
authored andcommitted
Update version.py
1 parent d64761e commit 2f4bb7d

File tree

4 files changed

+36
-2
lines changed

4 files changed

+36
-2
lines changed

src/superannotate/lib/app/serializers.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,3 +114,4 @@ def serialize(self):
114114
if data["attribute"] == "ImageQuality":
115115
data["value"] = constance.ImageQuality.get_name(data["value"])
116116
return data
117+

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

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -508,6 +508,7 @@ def __init__(
508508
self._item_names = item_names
509509
self._client = backend_service_provider
510510
self._show_process = show_process
511+
self._item_names_provided = True
511512

512513
def validate_project_type(self):
513514
if self._project.project_type == constances.ProjectType.PIXEL.value:
@@ -523,6 +524,7 @@ def validate_item_names(self):
523524
)
524525
self._item_names = item_names
525526
else:
527+
self._item_names_provided = False
526528
condition = (
527529
Condition("team_id", self._project.team_id, EQ)
528530
& Condition("project_id", self._project.uuid, EQ)
@@ -531,6 +533,18 @@ def validate_item_names(self):
531533

532534
self._item_names = [item.name for item in self._images.get_all(condition)]
533535

536+
def _prettify_annotations(self, annotations: List[dict]):
537+
538+
if self._item_names_provided:
539+
try:
540+
data = []
541+
for annotation in annotations:
542+
data.append((self._item_names.index(annotation["metadata"]["name"]), annotation))
543+
return [i[1] for i in sorted(data, key=lambda x: x[0])]
544+
except KeyError:
545+
raise AppException("Broken data.")
546+
return annotations
547+
534548
def execute(self):
535549
if self.is_valid():
536550
items_count = len(self._item_names)
@@ -552,7 +566,7 @@ def execute(self):
552566
self.reporter.log_warning(
553567
f"Could not find annotations for {items_count - received_items_count}/{items_count} items."
554568
)
555-
self._response.data = annotations
569+
self._response.data = self._prettify_annotations(annotations)
556570
return self._response
557571

558572

src/superannotate/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "4.3.0b13"
1+
__version__ = "4.3.0b16"

tests/integration/annotations/test_get_annotations.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,25 @@ def test_get_annotations(self):
4343
self.assertEqual(len(annotation_data["instances"]), len(annotations[0]["instances"]))
4444
parse_obj_as(List[VectorAnnotation], annotations)
4545

46+
@pytest.mark.flaky(reruns=3)
47+
def test_get_annotations_order(self):
48+
sa.init()
49+
sa.upload_images_from_folder_to_project(
50+
self.PROJECT_NAME, self.folder_path, annotation_status="InProgress"
51+
)
52+
sa.create_annotation_classes_from_classes_json(
53+
self.PROJECT_NAME, f"{self.folder_path}/classes/classes.json"
54+
)
55+
_, _, _ = sa.upload_annotations_from_folder_to_project(
56+
self.PROJECT_NAME, self.folder_path
57+
)
58+
names = [
59+
self.IMAGE_NAME, self.IMAGE_NAME.replace("1", "2"),
60+
self.IMAGE_NAME.replace("1", "3"), self.IMAGE_NAME.replace("1", "4")
61+
]
62+
annotations = sa.get_annotations(f"{self.PROJECT_NAME}", names)
63+
self.assertEqual(names, [i["metadata"]["name"] for i in annotations])
64+
4665
@pytest.mark.flaky(reruns=3)
4766
def test_get_annotations_from_folder(self):
4867
sa.init()

0 commit comments

Comments
 (0)