Skip to content

Commit f986592

Browse files
committed
merge
2 parents 8ffdb8f + 93395fc commit f986592

File tree

2 files changed

+53
-36
lines changed

2 files changed

+53
-36
lines changed

src/superannotate/lib/core/reporter.py

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,16 +44,17 @@ def start_progress(
4444
):
4545
self.progress_bar = self.get_progress_bar(iterations, description)
4646

47+
@staticmethod
4748
def get_progress_bar(
48-
self, iterations: Union[int, range], description: str = "Processing"
49+
iterations: Union[int, range], description: str = "Processing", disable=False
4950
):
5051
if isinstance(iterations, range):
5152
return tqdm.tqdm(
52-
iterations, desc=description, disable=self._disable_progress_bar
53+
iterations, desc=description, disable=disable
5354
)
5455
else:
5556
return tqdm.tqdm(
56-
total=iterations, desc=description, disable=self._disable_progress_bar
57+
total=iterations, desc=description, disable=disable
5758
)
5859

5960
def finish_progress(self):
@@ -77,3 +78,21 @@ def store_message(self, key: str, value: str):
7778
def messages(self):
7879
for key, values in self.custom_messages.items():
7980
yield f"{key} [{', '.join(values)}]"
81+
82+
83+
class Progress(object):
84+
def __init__(self, iterations: Union[int, range], description: str = "Processing"):
85+
self._iterations = iterations
86+
self._description = description
87+
self._progress_bar = None
88+
89+
def __enter__(self):
90+
return self
91+
92+
def __exit__(self, type, value, traceback):
93+
self._progress_bar.clos()
94+
95+
def update(self, value=1):
96+
if not self._progress_bar:
97+
self._progress_bar = Reporter.get_progress_bar(self._iterations, self._description)
98+
self._progress_bar.update(value)

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

Lines changed: 31 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
from lib.core.repositories import BaseManageableRepository
4141
from lib.core.repositories import BaseReadOnlyRepository
4242
from lib.core.response import Response
43+
from lib.core.reporter import Progress
4344
from lib.core.serviceproviders import SuerannotateServiceProvider
4445
from lib.core.usecases.base import BaseInteractiveUseCase
4546
from lib.core.usecases.base import BaseReportableUseCae
@@ -3237,40 +3238,37 @@ def execute(self) -> Response:
32373238
continue
32383239
uploaded_paths = []
32393240
for _ in frames_generator:
3240-
use_case = UploadImagesFromFolderToProject(
3241-
project=self._project,
3242-
folder=self._folder,
3243-
backend_client=self._service,
3244-
folder_path=temp_path,
3245-
settings=self._settings,
3246-
s3_repo=self._s3_repo,
3247-
annotation_status=self.annotation_status,
3248-
image_quality_in_editor=self._image_quality_in_editor,
3249-
)
3241+
with Progress(total_frames_count, f"Uploading {Path(path).name}") as progress:
3242+
use_case = UploadImagesFromFolderToProject(
3243+
project=self._project,
3244+
folder=self._folder,
3245+
backend_client=self._service,
3246+
folder_path=temp_path,
3247+
settings=self._settings,
3248+
s3_repo=self._s3_repo,
3249+
annotation_status=self.annotation_status,
3250+
image_quality_in_editor=self._image_quality_in_editor,
3251+
)
32503252

3251-
images_to_upload, duplicates = use_case.images_to_upload
3252-
if not len(images_to_upload):
3253-
continue
3254-
progress = self.reporter.get_progress_bar(
3255-
total_frames_count, f"Uploading {Path(path).name}"
3256-
)
3257-
if use_case.is_valid():
3258-
for _ in use_case.execute():
3259-
progress.update()
3260-
3261-
uploaded, failed_images, _ = use_case.response.data
3262-
uploaded_paths.extend(uploaded)
3263-
if failed_images:
3264-
self.reporter.log_warning(
3265-
f"Failed {len(failed_images)}."
3266-
)
3267-
files = os.listdir(temp_path)
3268-
image_paths = [f"{temp_path}/{f}" for f in files]
3269-
for image_path in image_paths:
3270-
os.remove(image_path)
3271-
else:
3272-
raise AppException(use_case.response.errors)
3273-
progress.close()
3253+
images_to_upload, duplicates = use_case.images_to_upload
3254+
if not len(images_to_upload):
3255+
continue
3256+
if use_case.is_valid():
3257+
for _ in use_case.execute():
3258+
progress.update()
3259+
3260+
uploaded, failed_images, _ = use_case.response.data
3261+
uploaded_paths.extend(uploaded)
3262+
if failed_images:
3263+
self.reporter.log_warning(
3264+
f"Failed {len(failed_images)}."
3265+
)
3266+
files = os.listdir(temp_path)
3267+
image_paths = [f"{temp_path}/{f}" for f in files]
3268+
for image_path in image_paths:
3269+
os.remove(image_path)
3270+
else:
3271+
raise AppException(use_case.response.errors)
32743272
data[str(path)] = uploaded_paths
32753273
self._response.data = data
32763274
return self._response

0 commit comments

Comments
 (0)