Skip to content

Commit 4b25321

Browse files
authored
Merge pull request #613 from superannotateai/1964_fix
fixed issue add duplicate items to subset
2 parents 2d0e2b7 + 980ed1f commit 4b25321

File tree

2 files changed

+27
-8
lines changed

2 files changed

+27
-8
lines changed

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

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1017,20 +1017,19 @@ def __distribute_to_results(self, item_id, response, item):
10171017

10181018
if item_id in response.data["success"]:
10191019
self.results["succeeded"].append(item)
1020+
response.data["success"].discard(item_id)
10201021
elif item_id in response.data["skipped"]:
10211022
self.results["skipped"].append(item)
1022-
else:
1023+
response.data["skipped"].discard(item_id)
1024+
elif item_id in response.data["failed"]:
10231025
self.results["failed"].append(item)
1026+
response.data["failed"].discard(item_id)
10241027

10251028
def validate_items(
10261029
self,
10271030
):
10281031

10291032
filtered_items = self.__filter_duplicates()
1030-
if len(filtered_items) != len(self.items):
1031-
self.reporter.log_info(
1032-
f"Dropping duplicates. Found {len(filtered_items)} / {len(self.items)} unique items."
1033-
)
10341033
self.items = filtered_items
10351034
self.items = self.__filter_invalid_items()
10361035
self.__separate_to_paths()
@@ -1077,10 +1076,15 @@ def execute(
10771076

10781077
response = None
10791078

1080-
for i in range(0, len(self.item_ids), self.CHUNK_SIZE):
1079+
unique_item_ids = list(set(self.item_ids))
1080+
if len(self.items) > len(unique_item_ids):
1081+
self.reporter.log_info(
1082+
f"Dropping duplicates. Found {len(unique_item_ids)} / {len(self.items)} unique items."
1083+
)
1084+
for i in range(0, len(unique_item_ids), self.CHUNK_SIZE):
10811085
tmp_response = self._service_provider.subsets.add_items(
10821086
project=self.project,
1083-
item_ids=self.item_ids[i : i + self.CHUNK_SIZE], # noqa
1087+
item_ids=unique_item_ids[i : i + self.CHUNK_SIZE], # noqa
10841088
subset=subset,
10851089
)
10861090

tests/integration/subsets/test_subsets.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,19 @@ def test_add_items_to_subset(self):
1818
subset_data = []
1919
for i in item_names:
2020
subset_data.append({"name": i["name"], "path": self.PROJECT_NAME})
21-
sa.add_items_to_subset(self.PROJECT_NAME, self.SUBSET_NAME, subset_data)
21+
result = sa.add_items_to_subset(self.PROJECT_NAME, self.SUBSET_NAME, subset_data)
22+
assert len(subset_data) == len(result["succeeded"])
23+
24+
def test_add_to_subset_with_duplicates_items(self):
25+
with self.assertLogs("sa", level="INFO") as cm:
26+
sa.attach_items(self.PROJECT_NAME, [{"name": "earth_mov_001.jpg", "url": "url_1"}]) # noqa
27+
item_metadata = sa.get_item_metadata(self.PROJECT_NAME, "earth_mov_001.jpg")
28+
subset_data = [{"name": "earth_mov_001.jpg", "path": self.PROJECT_NAME}, {"id": item_metadata["id"]}]
29+
result = sa.add_items_to_subset(self.PROJECT_NAME, self.SUBSET_NAME, subset_data)
30+
assert len(result["succeeded"]) == 1
31+
assert (
32+
"INFO:sa:Dropping duplicates. Found 1 / 2 unique items." == cm.output[2]
33+
)
34+
35+
36+

0 commit comments

Comments
 (0)