Skip to content

Commit 35bc63f

Browse files
committed
handling duplicates in csv in attach URLs, disabling fuse generation in exports for projects with attached URLs
1 parent e3325fd commit 35bc63f

File tree

4 files changed

+16
-5
lines changed

4 files changed

+16
-5
lines changed

superannotate/db/exports.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from tqdm import tqdm
1313

1414
from ..api import API
15-
from ..common import annotation_status_str_to_int
15+
from ..common import annotation_status_str_to_int, upload_state_int_to_str
1616
from ..exceptions import (
1717
SABaseException, SAExistingExportNameException,
1818
SANonExistingExportNameException
@@ -123,6 +123,11 @@ def prepare_export(
123123
"""
124124
if not isinstance(project, dict):
125125
project = get_project_metadata_bare(project)
126+
upload_state = upload_state_int_to_str(project.get("upload_state"))
127+
if upload_state == "External" and include_fuse == True:
128+
logger.info(
129+
"Include fuse functionality is not supported for projects containing images attached with URLs"
130+
)
126131
team_id, project_id = project["team_id"], project["id"]
127132
if annotation_statuses is None:
128133
annotation_statuses = [2, 3, 4, 5]

superannotate/db/projects.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -973,7 +973,11 @@ def attach_image_urls_to_project(
973973
annotation_status = common.annotation_status_str_to_int(annotation_status)
974974
team_id, project_id = project["team_id"], project["id"]
975975
image_data = pd.read_csv(attachments)
976+
image_data = image_data[~image_data["url"].isnull()]
976977
existing_names = image_data[~image_data["name"].isnull()]
978+
duplicate_idx_csv = existing_names.duplicated(subset="name", keep="first")
979+
duplicate_images = existing_names[duplicate_idx_csv]["name"].tolist()
980+
existing_names = existing_names[~duplicate_idx_csv]
977981
existing_images = search_images((project, project_folder))
978982
duplicate_idx = []
979983
for ind, _ in image_data[image_data["name"].isnull()].iterrows():
@@ -983,10 +987,11 @@ def attach_image_urls_to_project(
983987
image_data.at[ind, "name"] = name_try
984988
existing_images.append(name_try)
985989
break
990+
image_data.drop_duplicates(subset="name", keep="first", inplace=True)
986991
for ind, row in existing_names.iterrows():
987992
if row["name"] in existing_images:
988993
duplicate_idx.append(ind)
989-
duplicate_images = image_data.loc[duplicate_idx]["name"].tolist()
994+
duplicate_images.extend(image_data.loc[duplicate_idx]["name"].tolist())
990995
image_data.drop(labels=duplicate_idx, inplace=True)
991996
if len(duplicate_images) != 0:
992997
logger.warning(

tests/attach_urls.csv

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ https://drive.google.com/uc?export=download&id=1SfGcn9hdkVM35ZP0S93eStsE7Ti4GtHU
66
https://drive.google.com/uc?export=download&id=1SfGcn9hdkVM35ZP0S93eStsE7Ti4GtHU,6022a74b5384c50017c366cv
77
https://drive.google.com/uc?export=download&id=1geS2YtQiTYuiduEirKVYxBujHJaIWA3V,
88
https://drive.google.com/uc?export=download&id=1geS2YtQiTYuiduEirKVYxBujHJaIWA3V,6022a74b26aec4002575b9rm
9-
9+
https://drive.google.com/uc?export=download&id=1SfGcn9hdkVM35ZP0S93eStsE7Ti4GtHU,6022a74b5384c50017c366cv
10+
,fjvnvjsvnsdjcndsjcndjcs

tests/test_attach_image_urls.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,12 @@ def test_attach_image_urls():
2121

2222
assert len(uploaded) == 7
2323
assert len(could_not_upload) == 0
24-
assert len(existing_images) == 0
24+
assert len(existing_images) == 1
2525

2626
uploaded, could_not_upload, existing_images = sa.attach_image_urls_to_project(
2727
project, PATH_TO_URLS
2828
)
2929

3030
assert len(uploaded) == 2
3131
assert len(could_not_upload) == 0
32-
assert len(existing_images) == 5
32+
assert len(existing_images) == 6

0 commit comments

Comments
 (0)