Skip to content

Commit 7adb6dc

Browse files
authored
Merge pull request #410 from superannotateai/friday
Fix logs
2 parents 745b948 + 9f70d96 commit 7adb6dc

File tree

16 files changed

+118
-38
lines changed

16 files changed

+118
-38
lines changed

src/superannotate/lib/app/interface/cli_interface.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@
2323
from lib.infrastructure.repositories import ConfigRepository
2424

2525

26-
controller = Controller.get_default()
26+
controller = Controller()
27+
controller.retrieve_configs(constances.CONFIG_FILE_LOCATION)
2728

2829

2930
class CLIFacade(BaseInterfaceFacade):

src/superannotate/lib/app/interface/sdk_interface.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -547,6 +547,12 @@ def upload_images_from_public_urls_to_project(
547547
and not-uploaded images' urls
548548
:rtype: tuple of list of strs
549549
"""
550+
warning_msg = (
551+
"The upload_images_from_public_urls function is deprecated and will be removed with the coming release, "
552+
"please use attach_image_urls_to_project instead."
553+
)
554+
logger.warning(warning_msg)
555+
warnings.warn(warning_msg, DeprecationWarning)
550556

551557
project_name, folder_name = extract_project_folder(project)
552558

@@ -2416,7 +2422,7 @@ def add_annotation_comment_to_image(
24162422
image_name: NotEmptyStr,
24172423
comment_text: NotEmptyStr,
24182424
comment_coords: List[float],
2419-
comment_author: NotEmptyStr,
2425+
comment_author: EmailStr,
24202426
resolved: Optional[StrictBool] = False,
24212427
):
24222428
"""Add a comment to SuperAnnotate format annotation JSON
@@ -2850,7 +2856,7 @@ def invite_contributors_to_team(
28502856

28512857
@Trackable
28522858
@validate_arguments
2853-
def get_annotations(project: NotEmptyStr, items: Optional[List[NotEmptyStr]]):
2859+
def get_annotations(project: NotEmptyStr, items: Optional[List[NotEmptyStr]] = None):
28542860
"""Returns annotations for the given list of items.
28552861
28562862
:param project: project name

src/superannotate/lib/app/mixp/decorators.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,8 @@ def __call__(self, *args, **kwargs):
8888
else:
8989
raise Exception(
9090
"SuperAnnotate config file not found."
91-
f" Please provide correct config file location to sa.init(<path>) or use "
92-
f"CLI's superannotate init to generate default location config file."
91+
" Please provide correct config file location to sa.init(<path>) or use "
92+
"CLI's superannotate init to generate default location config file."
9393
)
9494
except Exception as e:
9595
self._success = False

src/superannotate/lib/app/mixp/utils/parsers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1226,4 +1226,4 @@ def get_annotations_per_frame(*args, **kwargs):
12261226
return {
12271227
"event_name": "get_annotations_per_frame",
12281228
"properties": {"Project": project, "fps": fps},
1229-
}
1229+
}

src/superannotate/lib/core/data_handlers.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,12 @@
88
from typing import Dict
99
from typing import List
1010

11-
from superannotate_schemas.schemas.classes import AnnotationClass
12-
from superannotate_schemas.schemas.classes import Attribute
13-
from superannotate_schemas.schemas.classes import AttributeGroup
14-
1511
import lib.core as constances
1612
from lib.core.enums import ClassTypeEnum
1713
from lib.core.reporter import Reporter
14+
from superannotate_schemas.schemas.classes import AnnotationClass
15+
from superannotate_schemas.schemas.classes import Attribute
16+
from superannotate_schemas.schemas.classes import AttributeGroup
1817

1918

2019
class BaseDataHandler(metaclass=ABCMeta):

src/superannotate/lib/core/reporter.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ def log_debug(self, value: str):
4646
self.debug_messages.append(value)
4747

4848
def start_progress(
49-
self, iterations: Union[int, range], description: str = "Processing"
49+
self, iterations: Union[int, range], description: str = "Processing", disable=False
5050
):
51-
self.progress_bar = self.get_progress_bar(iterations, description)
51+
self.progress_bar = self.get_progress_bar(iterations, description, disable)
5252

5353
@staticmethod
5454
def get_progress_bar(
@@ -63,7 +63,8 @@ def finish_progress(self):
6363
self.progress_bar.close()
6464

6565
def update_progress(self, value: int = 1):
66-
self.progress_bar.update(value)
66+
if self.progress_bar:
67+
self.progress_bar.update(value)
6768

6869
def generate_report(self) -> str:
6970
report = ""

src/superannotate/lib/core/serviceproviders.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from typing import List
66
from typing import Tuple
77

8+
from lib.core.reporter import Reporter
89
from lib.core.service_types import ServiceResponse
910

1011

@@ -304,5 +305,12 @@ def get_limitations(
304305
raise NotImplementedError
305306

306307
@abstractmethod
307-
def get_annotations(self, project_id: int, team_id: int, folder_id: int, items: List[str]) -> List[dict]:
308+
def get_annotations(
309+
self,
310+
project_id: int,
311+
team_id: int,
312+
folder_id: int,
313+
items: List[str],
314+
reporter: Reporter
315+
) -> List[dict]:
308316
raise NotImplementedError

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

Lines changed: 43 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99

1010
import boto3
1111
import lib.core as constances
12+
from lib.core.conditions import Condition
13+
from lib.core.conditions import CONDITION_EQ as EQ
1214
from lib.core.data_handlers import ChainedAnnotationHandlers
1315
from lib.core.data_handlers import DocumentTagHandler
1416
from lib.core.data_handlers import LastActionHandler
@@ -494,14 +496,18 @@ def __init__(
494496
reporter: Reporter,
495497
project: ProjectEntity,
496498
folder: FolderEntity,
499+
images: BaseManageableRepository,
497500
item_names: Optional[List[str]],
498-
backend_service_provider: SuerannotateServiceProvider
501+
backend_service_provider: SuerannotateServiceProvider,
502+
show_process: bool = True
499503
):
500504
super().__init__(reporter)
501505
self._project = project
502506
self._folder = folder
507+
self._images = images
503508
self._item_names = item_names
504509
self._client = backend_service_provider
510+
self._show_process = show_process
505511

506512
def validate_item_names(self):
507513
if self._item_names:
@@ -512,15 +518,36 @@ def validate_item_names(self):
512518
f"Dropping duplicates. Found {len_unique_items}/{len_items} unique items."
513519
)
514520
self._item_names = item_names
521+
else:
522+
condition = (
523+
Condition("team_id", self._project.team_id, EQ)
524+
& Condition("project_id", self._project.uuid, EQ)
525+
& Condition("folder_id", self._folder.uuid, EQ)
526+
)
527+
528+
self._item_names = [item.name for item in self._images.get_all(condition)]
515529

516530
def execute(self):
517-
annotations = self._client.get_annotations(
518-
team_id=self._project.team_id,
519-
project_id=self._project.uuid,
520-
folder_id=self._folder.uuid,
521-
items=self._item_names
522-
)
523-
self._response.data = annotations
531+
if self.is_valid():
532+
items_count = len(self._item_names)
533+
self.reporter.log_info(
534+
f"Getting {items_count} annotations from "
535+
f"{self._project.name}{f'/{self._folder.name}' if self._folder else ''}."
536+
)
537+
self.reporter.start_progress(items_count, disable=not self._show_process)
538+
annotations = self._client.get_annotations(
539+
team_id=self._project.team_id,
540+
project_id=self._project.uuid,
541+
folder_id=self._folder.uuid,
542+
items=self._item_names,
543+
reporter=self.reporter
544+
)
545+
received_items_count = len(annotations)
546+
if items_count > received_items_count:
547+
self.reporter.log_warning(
548+
f"Could not find annotations for {items_count - received_items_count}/{items_count} items."
549+
)
550+
self._response.data = annotations
524551
return self._response
525552

526553

@@ -530,13 +557,15 @@ def __init__(
530557
reporter: Reporter,
531558
project: ProjectEntity,
532559
folder: FolderEntity,
560+
images: BaseManageableRepository,
533561
video_name: str,
534562
fps: int,
535563
backend_service_provider: SuerannotateServiceProvider
536564
):
537565
super().__init__(reporter)
538566
self._project = project
539567
self._folder = folder
568+
self._images = images
540569
self._video_name = video_name
541570
self._fps = fps
542571
self._client = backend_service_provider
@@ -546,17 +575,21 @@ def execute(self):
546575
reporter=self.reporter,
547576
project=self._project,
548577
folder=self._folder,
578+
images=self._images,
549579
item_names=[self._video_name],
550-
backend_service_provider=self._client
580+
backend_service_provider=self._client,
581+
show_process=False
551582
).execute()
583+
generator = VideoFrameGenerator(response.data[0], fps=self._fps)
584+
self.reporter.log_info(f"Getting annotations for {generator.frames_count} frames from {self._video_name}.")
552585
if response.errors:
553586
self._response.errors = response.errors
554587
return self._response
555588
if not response.data:
556589
self._response.errors = AppException(f"Video {self._video_name} not found.")
557590
annotations = response.data
558591
if annotations:
559-
self._response.data = list(VideoFrameGenerator(response.data[0], fps=self._fps))
592+
self._response.data = list(generator)
560593
else:
561594
self._response.data = []
562595
return self._response

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1928,8 +1928,8 @@ def execute(self):
19281928
project=self._project,
19291929
folder=self._folder,
19301930
attachments=self._attachments[
1931-
i : i + self.CHUNK_SIZE
1932-
], # noqa: E203
1931+
i : i + self.CHUNK_SIZE # noqa: E203
1932+
],
19331933
backend_service_provider=self._backend_service,
19341934
annotation_status=self._annotation_status,
19351935
upload_state_code=self._upload_state_code,

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import copy
22
from collections import defaultdict
3-
from typing import Iterable
43
from typing import List
54
from typing import Type
65

0 commit comments

Comments
 (0)