Skip to content

Commit 7540ef6

Browse files
authored
Merge pull request #717 from superannotateai/FRIDAY_3118
Fix system status check
2 parents d4eb8d2 + a12cf20 commit 7540ef6

File tree

9 files changed

+38
-38
lines changed

9 files changed

+38
-38
lines changed

pytest.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ minversion = 3.7
33
log_cli=true
44
python_files = test_*.py
55
;pytest_plugins = ['pytest_profiling']
6-
addopts = -n auto --dist=loadscope
6+
;addopts = -n auto --dist=loadscope

src/superannotate/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import sys
44

55

6-
__version__ = "4.4.25b2"
6+
__version__ = "4.4.25b3"
77

88
os.environ.update({"sa_version": __version__})
99
sys.path.append(os.path.split(os.path.realpath(__file__))[0])

src/superannotate/lib/core/service_types.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,10 @@ class ProjectResponse(ServiceResponse):
222222
res_data: entities.ProjectEntity = None
223223

224224

225+
class WorkflowResponse(ServiceResponse):
226+
res_data: entities.WorkflowEntity = None
227+
228+
225229
class WorkflowListResponse(ServiceResponse):
226230
res_data: List[entities.WorkflowEntity] = None
227231

src/superannotate/lib/core/serviceproviders.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,10 @@ def __init__(self, client: BaseClient):
7070

7171

7272
class BaseWorkManagementService(SuperannotateServiceProvider):
73+
@abstractmethod
74+
def get_workflow(self, pk: int) -> entities.WorkflowEntity:
75+
raise NotImplementedError
76+
7377
@abstractmethod
7478
def list_workflows(self, query: Query) -> WorkflowListResponse:
7579
raise NotImplementedError

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

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
from lib.core.entities import ImageEntity
3737
from lib.core.entities import ProjectEntity
3838
from lib.core.entities import UserEntity
39-
from lib.core.entities import WorkflowEntity
4039
from lib.core.exceptions import AppException
4140
from lib.core.jsx_conditions import EmptyQuery
4241
from lib.core.jsx_conditions import Filter
@@ -477,13 +476,8 @@ def execute(self):
477476
{i.item.name for i in items_to_upload}
478477
- set(self._report.failed_annotations).union(set(skipped))
479478
)
480-
response = self._service_provider.work_management.list_workflows(
481-
Filter("id", self._project.workflow_id, OperatorEnum.EQ)
482-
)
483-
if not response.ok:
484-
raise AppException(response.error)
485-
workflow: WorkflowEntity = next(
486-
(i for i in response.data if i.id == self._project.workflow_id), None
479+
workflow = self._service_provider.work_management.get_workflow(
480+
self._project.workflow_id
487481
)
488482
if workflow.is_system():
489483
if uploaded_annotations and not self._keep_status:
@@ -842,12 +836,9 @@ def execute(self):
842836
name_path_mappings.keys()
843837
- set(self._report.failed_annotations).union(set(missing_annotations))
844838
)
845-
response = self._service_provider.work_management.list_workflows(
846-
Filter("id", self._project.id, OperatorEnum.EQ)
839+
workflow = self._service_provider.work_management.get_workflow(
840+
self._project.workflow_id
847841
)
848-
if response.error:
849-
raise response.error
850-
workflow = response.data[0]
851842
if workflow.is_system() and uploaded_annotations and not self._keep_status:
852843
statuses_changed = set_annotation_statuses_in_progress(
853844
service_provider=self._service_provider,
@@ -1084,12 +1075,9 @@ def execute(self):
10841075
],
10851076
Body=mask,
10861077
)
1087-
response = self._service_provider.work_management.list_workflows(
1088-
Filter("id", self._project.workflow_id, OperatorEnum.EQ)
1078+
workflow = self._service_provider.work_management.get_workflow(
1079+
self._project.workflow_id
10891080
)
1090-
if not response.ok:
1091-
raise AppException(response.error)
1092-
workflow = response.data[0]
10931081
if workflow.is_system() and not self._keep_status:
10941082
statuses_changed = set_annotation_statuses_in_progress(
10951083
service_provider=self._service_provider,

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

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -743,19 +743,15 @@ def __init__(
743743
self._s3_repo = s3_repo
744744
self._service_provider = service_provider
745745
if annotation_status_value is None:
746-
response = self._service_provider.work_management.list_workflows(
747-
Filter("id", self._project.workflow_id, OperatorEnum.EQ)
746+
workflow = self._service_provider.work_management.get_workflow(
747+
self._project.workflow_id
748748
)
749-
if response.error:
750-
raise AppException(response.error)
751-
workflow = response.data[0]
752749
if workflow.is_system():
753750
annotation_status_value = (
754751
self._service_provider.get_annotation_status_value(
755752
self._project, "NotStarted"
756753
)
757754
)
758-
759755
self._annotation_status_value = annotation_status_value
760756
self._auth_data = None
761757

@@ -1106,12 +1102,9 @@ def execute(self):
11061102
attach_duplications_list = []
11071103

11081104
if not self._annotation_status_value:
1109-
response = self._service_provider.work_management.list_workflows(
1110-
Filter("id", self._project.workflow_id, OperatorEnum.EQ)
1105+
workflow = self._service_provider.work_management.get_workflow(
1106+
self._project.workflow_id
11111107
)
1112-
if response.error:
1113-
raise AppException(response.error)
1114-
workflow = response.data[0]
11151108
if workflow.is_system():
11161109
self._annotation_status_value = (
11171110
self._service_provider.get_annotation_status_value(

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -926,7 +926,6 @@ def execute(
926926
self,
927927
):
928928
if self.is_valid():
929-
930929
futures = []
931930
with ThreadPoolExecutor(max_workers=4) as executor:
932931
for path, items in self.path_separated.items():

src/superannotate/lib/infrastructure/services/work_management.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import base64
22

33
from lib.core.entities import WorkflowEntity
4+
from lib.core.jsx_conditions import Filter
5+
from lib.core.jsx_conditions import OperatorEnum
46
from lib.core.jsx_conditions import Query
57
from lib.core.serviceproviders import BaseWorkManagementService
68

@@ -11,6 +13,14 @@ class WorkManagementService(BaseWorkManagementService):
1113
URL_LIST_STATUSES = "workflows/{workflow_id}/workflowstatuses"
1214
URL_LIST_ROLES = "workflows/{workflow_id}/workflowroles"
1315

16+
def get_workflow(self, pk: int) -> WorkflowEntity:
17+
response = self.list_workflows(Filter("id", pk, OperatorEnum.EQ))
18+
if response.error:
19+
raise response.error
20+
for w in response.data:
21+
if w.id == pk:
22+
return w
23+
1424
def list_workflows(self, query: Query):
1525
result = self.client.paginate(
1626
f"{self.URL_LIST}?{query.build_query()}",

tests/applicatoin/custom_workflow.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@ class TestWorkflow(TestCase):
2323
PROJECT_DESCRIPTION = PROJECT_NAME
2424
CLASSES_PATH = "sample_project_vector/classes/classes.json"
2525
ANNOTATIONS_PATH = "sample_project_vector"
26-
PROJECT_TYPE = "GenAi"
26+
PROJECT_TYPE = "Vector"
2727

2828
@classmethod
2929
def setUpClass(cls, *args, **kwargs):
3030
cls.tearDownClass()
3131
cls._project = sa.create_project(
32-
cls.PROJECT_NAME, cls.PROJECT_DESCRIPTION, cls.PROJECT_TYPE, workflow="ttt"
32+
cls.PROJECT_NAME, cls.PROJECT_DESCRIPTION, cls.PROJECT_TYPE, workflow="ttp"
3333
)
3434

3535
@classmethod
@@ -190,7 +190,9 @@ def alphanumeric_key(s):
190190

191191
def test_steps(self):
192192
for name, step in self._steps():
193-
try:
194-
step()
195-
except Exception as e:
196-
self.fail("{} failed ({}: {})".format(step, type(e), e))
193+
step()
194+
# try:
195+
# step()
196+
# except Exception as e:
197+
# raise e
198+
# self.fail("{} failed ({}: {})".format(step, type(e), e))

0 commit comments

Comments
 (0)