Skip to content

Commit 4c0340c

Browse files
authored
Merge pull request #597 from superannotateai/1838_deprecated_functions
removed create_project_from_metadata get_project_image_count
2 parents f8f8181 + 302cef5 commit 4c0340c

File tree

9 files changed

+11
-347
lines changed

9 files changed

+11
-347
lines changed

docs/source/api_reference/api_project.rst

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,13 @@ Projects
55
.. _ref_search_projects:
66
.. automethod:: superannotate.SAClient.create_project
77
.. automethod:: superannotate.SAClient.search_projects
8-
.. automethod:: superannotate.SAClient.create_project_from_metadata
98
.. automethod:: superannotate.SAClient.clone_project
109
.. automethod:: superannotate.SAClient.rename_project
1110
.. automethod:: superannotate.SAClient.delete_project
1211
.. _ref_get_project_metadata:
1312
.. automethod:: superannotate.SAClient.get_project_by_id
1413
.. automethod:: superannotate.SAClient.set_project_status
1514
.. automethod:: superannotate.SAClient.get_project_metadata
16-
.. automethod:: superannotate.SAClient.get_project_image_count
1715
.. automethod:: superannotate.SAClient.upload_images_to_project
1816
.. automethod:: superannotate.SAClient.attach_items_from_integrated_storage
1917
.. automethod:: superannotate.SAClient.upload_image_to_project

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

Lines changed: 0 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import logging
66
import os
77
import sys
8-
import warnings
98
from pathlib import Path
109
from typing import Callable
1110
from typing import Dict
@@ -47,7 +46,6 @@
4746
from lib.app.serializers import TeamSerializer
4847
from lib.core import LIMITED_FUNCTIONS
4948
from lib.core import entities
50-
from lib.core import enums
5149
from lib.core.conditions import CONDITION_EQ as EQ
5250
from lib.core.conditions import Condition
5351
from lib.core.conditions import EmptyCondition
@@ -385,45 +383,6 @@ def create_project(
385383
project.workflows = self.controller.projects.list_workflow(project).data
386384
return ProjectSerializer(project).serialize()
387385

388-
def create_project_from_metadata(self, project_metadata: Project):
389-
"""Create a new project in the team using project metadata object dict.
390-
391-
| Mandatory keys: “name”, “description” and “type” (Vector or Pixel)
392-
| Non-mandatory keys: “workflow”, “settings” and “annotation_classes”
393-
394-
:param project_metadata: project metadata
395-
:type project_metadata: dict
396-
397-
:return: dict object metadata the new project
398-
:rtype: dict
399-
"""
400-
deprecation_msg = '"create_project_from_metadata" is deprecated and replaced by "create_project"'
401-
warnings.warn(deprecation_msg, DeprecationWarning)
402-
logger.warning(deprecation_msg)
403-
404-
project_metadata = project_metadata.dict()
405-
if project_metadata["type"] not in enums.ProjectType.titles():
406-
raise AppException(
407-
"Please provide a valid project type: Vector, Pixel, Document, or Video."
408-
)
409-
410-
response = self.controller.projects.create(
411-
entities.ProjectEntity(
412-
name=project_metadata["name"],
413-
description=project_metadata.get("description"),
414-
type=constants.ProjectType.get_value(project_metadata["type"]),
415-
settings=parse_obj_as(
416-
List[SettingEntity], project_metadata.get("settings", [])
417-
),
418-
classes=project_metadata.get("classes", []),
419-
workflows=project_metadata.get("workflows", []),
420-
instructions_link=project_metadata.get("instructions_link"),
421-
),
422-
)
423-
if response.errors:
424-
raise AppException(response.errors)
425-
return ProjectSerializer(response.data).serialize()
426-
427386
def clone_project(
428387
self,
429388
project_name: Union[NotEmptyStr, dict],
@@ -1112,39 +1071,6 @@ def upload_images_from_folder_to_project(
11121071
return use_case.data
11131072
raise AppException(use_case.response.errors)
11141073

1115-
def get_project_image_count(
1116-
self,
1117-
project: Union[NotEmptyStr, dict],
1118-
with_all_subfolders: Optional[StrictBool] = False,
1119-
):
1120-
"""Returns number of images in the project.
1121-
1122-
:param project: project name or folder path (e.g., "project1/folder1")
1123-
:type project: str
1124-
:param with_all_subfolders: enables recursive folder counting
1125-
:type with_all_subfolders: bool
1126-
1127-
:return: number of images in the project
1128-
:rtype: int
1129-
"""
1130-
deprecation_msg = (
1131-
"“get_project_image_count” is deprecated and replaced"
1132-
" by “item_count” value will be included in project metadata."
1133-
)
1134-
1135-
warnings.warn(deprecation_msg, DeprecationWarning)
1136-
logger.warning(deprecation_msg)
1137-
project_name, folder_name = extract_project_folder(project)
1138-
1139-
response = self.controller.get_project_image_count(
1140-
project_name=project_name,
1141-
folder_name=folder_name,
1142-
with_all_subfolders=with_all_subfolders,
1143-
)
1144-
if response.errors:
1145-
raise AppException(response.errors)
1146-
return response.data
1147-
11481074
def download_image_annotations(
11491075
self,
11501076
project: Union[NotEmptyStr, dict],

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

Lines changed: 0 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
from lib.core.conditions import Condition
88
from lib.core.conditions import CONDITION_EQ as EQ
99
from lib.core.entities import ContributorEntity
10-
from lib.core.entities import FolderEntity
1110
from lib.core.entities import ProjectEntity
1211
from lib.core.entities import SettingEntity
1312
from lib.core.entities import TeamEntity
@@ -508,48 +507,6 @@ def execute(self):
508507
return self._response
509508

510509

511-
class GetProjectImageCountUseCase(BaseUseCase):
512-
def __init__(
513-
self,
514-
service_provider: BaseServiceProvider,
515-
project: ProjectEntity,
516-
folder: FolderEntity,
517-
with_all_sub_folders: bool = False,
518-
):
519-
super().__init__()
520-
self._service_provider = service_provider
521-
self._project = project
522-
self._folder = folder
523-
self._with_all_sub_folders = with_all_sub_folders
524-
525-
def validate_user_input(self):
526-
if not self._folder.name == "root" and self._with_all_sub_folders:
527-
raise AppValidationException("The folder does not contain any sub-folders.")
528-
529-
def validate_project_type(self):
530-
if self._project.type in constances.LIMITED_FUNCTIONS:
531-
raise AppValidationException(
532-
constances.LIMITED_FUNCTIONS[self._project.type]
533-
)
534-
535-
def execute(self):
536-
if self.is_valid():
537-
data = self._service_provider.get_project_images_count(self._project).data
538-
count = 0
539-
if self._folder.name == "root":
540-
count += data["images"]["count"]
541-
if self._with_all_sub_folders:
542-
for i in data["folders"]["data"]:
543-
count += i["imagesCount"]
544-
else:
545-
for i in data["folders"]["data"]:
546-
if i["id"] == self._folder.id:
547-
count = i["imagesCount"]
548-
549-
self._response.data = count
550-
return self._response
551-
552-
553510
class SetWorkflowUseCase(BaseUseCase):
554511
def __init__(
555512
self,

src/superannotate/lib/infrastructure/controller.py

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1073,22 +1073,6 @@ def get_exports(self, project_name: str, return_metadata: bool):
10731073
)
10741074
return use_case.execute()
10751075

1076-
def get_project_image_count(
1077-
self, project_name: str, folder_name: str, with_all_subfolders: bool
1078-
):
1079-
1080-
project = self.get_project(project_name)
1081-
folder = self.get_folder(project=project, name=folder_name)
1082-
1083-
use_case = usecases.GetProjectImageCountUseCase(
1084-
service_provider=self.service_provider,
1085-
project=project,
1086-
folder=folder,
1087-
with_all_sub_folders=with_all_subfolders,
1088-
)
1089-
1090-
return use_case.execute()
1091-
10921076
def download_image(
10931077
self,
10941078
project_name: str,

tests/integration/folders/test_folders.py

Lines changed: 11 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -174,27 +174,18 @@ def test_project_folder_image_count(self):
174174
sa.upload_images_from_folder_to_project(
175175
self.PROJECT_NAME, self.folder_path, annotation_status="InProgress"
176176
)
177-
num_images = sa.get_project_image_count(self.PROJECT_NAME)
178-
self.assertEqual(num_images, 4)
179177

180178
sa.create_folder(self.PROJECT_NAME, self.TEST_FOLDER_NAME_1)
181179
sa.upload_images_from_folder_to_project(
182180
self.PROJECT_NAME + f"/{self.TEST_FOLDER_NAME_1}",
183181
self.folder_path,
184182
annotation_status="InProgress",
185183
)
186-
num_images = sa.get_project_image_count(self.PROJECT_NAME)
187-
self.assertEqual(num_images, 4)
184+
num_images = sa.search_items(self.PROJECT_NAME)
185+
assert len(num_images) == 4
188186

189-
num_images = sa.get_project_image_count(
190-
self.PROJECT_NAME + f"/{self.TEST_FOLDER_NAME_1}"
191-
)
192-
self.assertEqual(num_images, 4)
193-
194-
num_images = sa.get_project_image_count(
195-
self.PROJECT_NAME, with_all_subfolders=True
196-
)
197-
self.assertEqual(num_images, 8)
187+
num_images = sa.search_items(f"{self.PROJECT_NAME}/{self.TEST_FOLDER_NAME_1}")
188+
assert len(num_images) == 4
198189

199190
def test_delete_items(self):
200191
sa.create_folder(self.PROJECT_NAME, self.TEST_FOLDER_NAME_1)
@@ -204,26 +195,20 @@ def test_delete_items(self):
204195
self.folder_path,
205196
annotation_status="InProgress",
206197
)
207-
num_images = sa.get_project_image_count(
208-
self.PROJECT_NAME, with_all_subfolders=True
209-
)
210-
self.assertEqual(num_images, 4)
198+
num_images = sa.search_items(self.PROJECT_NAME)
199+
assert len(num_images) == 4
211200

212201
sa.delete_items(
213202
f"{self.PROJECT_NAME}/{self.TEST_FOLDER_NAME_1}",
214203
[self.EXAMPLE_IMAGE_2, self.EXAMPLE_IMAGE_3],
215204
)
216-
num_images = sa.get_project_image_count(
217-
self.PROJECT_NAME, with_all_subfolders=True
218-
)
219-
self.assertEqual(num_images, 2)
205+
num_images = sa.search_items(self.PROJECT_NAME)
206+
assert len(num_images) == 2
220207

221208
sa.delete_items(self.PROJECT_NAME, None)
222-
time.sleep(2)
223-
num_images = sa.get_project_image_count(
224-
self.PROJECT_NAME, with_all_subfolders=False
225-
)
226-
self.assertEqual(num_images, 0)
209+
210+
num_images = sa.search_items(self.PROJECT_NAME)
211+
assert len(num_images) == 0
227212

228213
@pytest.mark.flaky(reruns=2)
229214
def test_project_completed_count(self):

0 commit comments

Comments
 (0)