Skip to content

Commit 70fbb4b

Browse files
Merge pull request #2041 from kili-technology/lab-4339-step-filter
feat(LAB-4339): add step_name_and_status_in / not_in filters
2 parents d6a28a3 + 770998f commit 70fbb4b

File tree

15 files changed

+120
-19
lines changed

15 files changed

+120
-19
lines changed

src/kili/adapters/kili_api_gateway/asset/mappers.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,4 +68,20 @@ def asset_where_mapper(filters: AssetFilters):
6868
"stepIdNotIn": filters.step_id_not_in,
6969
"stepStatusIn": filters.step_status_in,
7070
"stepStatusNotIn": filters.step_status_not_in,
71+
"stepIdAndStatusIn": (
72+
[
73+
{"stepId": step_id, "status": step_status}
74+
for step_id, step_status in filters.step_id_and_status_in
75+
]
76+
if filters.step_id_and_status_in is not None
77+
else None
78+
),
79+
"stepIdAndStatusNotIn": (
80+
[
81+
{"stepId": step_id, "status": step_status}
82+
for step_id, step_status in filters.step_id_and_status_not_in
83+
]
84+
if filters.step_id_and_status_not_in is not None
85+
else None
86+
),
7187
}

src/kili/domain/asset/asset.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ class AssetFilters:
6262
issue_status: Optional["IssueStatus"] = None
6363
skipped: Optional[bool] = None
6464
status_in: Optional[ListOrTuple[AssetStatus]] = None
65+
step_id_and_status_in: Optional[list[tuple[str, StatusInStep]]] = None
66+
step_id_and_status_not_in: Optional[list[tuple[str, StatusInStep]]] = None
6567
step_id_in: Optional[ListOrTuple[str]] = None
6668
step_id_not_in: Optional[ListOrTuple[str]] = None
6769
step_status_in: Optional[ListOrTuple[StatusInStep]] = None
@@ -73,6 +75,8 @@ class AssetWorkflowFilters(TypedDict, total=False):
7375

7476
skipped: Optional[bool]
7577
status_in: Optional[ListOrTuple[AssetStatus]]
78+
step_name_and_status_in: Optional[list[tuple[str, StatusInStep]]]
79+
step_name_and_status_not_in: Optional[list[tuple[str, StatusInStep]]]
7680
step_name_in: Optional[ListOrTuple[str]]
7781
step_name_not_in: Optional[ListOrTuple[str]]
7882
step_status_in: Optional[ListOrTuple[StatusInStep]]

src/kili/domain/asset/helpers.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ def check_asset_workflow_arguments(
3333
project_workflow_version: WorkflowVersion, asset_workflow_filters: AssetWorkflowFilters
3434
) -> None:
3535
"""Check asset workflow parameters relative to the project workflow version."""
36+
step_name_and_status_in = asset_workflow_filters.get("step_name_and_status_in")
37+
step_name_and_status_not_in = asset_workflow_filters.get("step_name_and_status_not_in")
3638
step_name_in = asset_workflow_filters.get("step_name_in")
3739
step_status_in = asset_workflow_filters.get("step_status_in")
3840
status_in = asset_workflow_filters.get("status_in")
@@ -64,3 +66,8 @@ def check_asset_workflow_arguments(
6466
raise ValueError(
6567
"Filters step_name_in and/or step_status_in given : use filter status_in for this project."
6668
)
69+
if step_name_and_status_in is not None or step_name_and_status_not_in is not None:
70+
raise ValueError(
71+
"Filters step_name_and_status_in and/or step_name_and_status_not_in given : use filter "
72+
"status_in for this project."
73+
)

src/kili/domain_api/assets.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
"""Assets domain namespace for the Kili Python SDK."""
2-
# pylint: disable=too-many-lines,too-many-public-methods
2+
# pylint: disable=too-many-lines
33

44
import warnings
55
from collections.abc import Generator
@@ -87,6 +87,8 @@ class AssetFilter(TypedDict, total=False):
8787
metadata_where: Optional[dict[str, Any]]
8888
skipped: Optional[bool]
8989
status_in: Optional[list[AssetStatus]]
90+
step_name_and_status_in: Optional[list[tuple[str, StatusInStep]]]
91+
step_name_and_status_not_in: Optional[list[tuple[str, StatusInStep]]]
9092
step_name_in: Optional[list[str]]
9193
step_name_not_in: Optional[list[str]]
9294
step_status_in: Optional[list[StatusInStep]]

src/kili/domain_api/issues.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
This module provides a comprehensive interface for issue-related operations
44
including creation, querying, status management, and lifecycle operations.
55
"""
6-
# pylint: disable=too-many-public-methods
76

87
from collections.abc import Generator
98
from itertools import repeat

src/kili/domain_api/labels.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# pylint: disable=too-many-lines,too-many-public-methods
1+
# pylint: disable=too-many-lines
22
"""Labels domain namespace for the Kili Python SDK.
33
44
This module provides a comprehensive interface for label-related operations

src/kili/domain_api/organizations.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
"""Organizations domain namespace for the Kili Python SDK."""
2-
# pylint: disable=too-many-public-methods
32

43
from collections.abc import Generator
54
from datetime import datetime

src/kili/domain_api/plugins.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
"""Plugins domain namespace for the Kili Python SDK."""
2-
# pylint: disable=too-many-public-methods
32

43
from datetime import datetime
54
from typing import List, Optional

src/kili/domain_api/projects.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
This module provides a comprehensive interface for project-related operations
44
including lifecycle management, user management, workflow configuration, and versioning.
55
"""
6-
# pylint: disable=too-many-public-methods
76

87
from collections.abc import Generator, Iterable, Sequence
98
from functools import cached_property

src/kili/domain_api/questions.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
This module provides a comprehensive interface for question-related operations
44
including creation, querying, status management, and lifecycle operations.
55
"""
6-
# pylint: disable=too-many-public-methods
76

87
from collections.abc import Generator
98
from itertools import repeat

0 commit comments

Comments
 (0)