Skip to content

Commit 5c423ac

Browse files
author
Val Brodsky
committed
Simplified filter creation
1 parent 1826a42 commit 5c423ac

File tree

2 files changed

+48
-60
lines changed

2 files changed

+48
-60
lines changed

libs/labelbox/src/labelbox/schema/search_filters.py

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ class OrganizationFilter(BaseSearchFilter):
6767
"""
6868
Filter for organization
6969
"""
70-
operation: Literal[OperationType.Organization]
70+
operation: Literal[OperationType.Organization] = OperationType.Organization
7171
operator: IdOperator
7272
values: List[str]
7373

@@ -76,7 +76,7 @@ class WorkspaceFilter(BaseSearchFilter):
7676
"""
7777
Filter for workspace
7878
"""
79-
operation: Literal[OperationType.Workspace]
79+
operation: Literal[OperationType.Workspace] = OperationType.Workspace
8080
operator: IdOperator
8181
values: List[str]
8282

@@ -85,7 +85,7 @@ class TagFilter(BaseSearchFilter):
8585
"""
8686
Filter for project tags
8787
"""
88-
operation: Literal[OperationType.Tag]
88+
operation: Literal[OperationType.Tag] = OperationType.Tag
8989
operator: IdOperator
9090
values: List[str]
9191

@@ -94,7 +94,7 @@ class ProjectStageFilter(BaseSearchFilter):
9494
"""
9595
Filter labelbox service / aka project stages
9696
"""
97-
operation: Literal[OperationType.Stage]
97+
operation: Literal[OperationType.Stage] = OperationType.Stage
9898
operator: IdOperator
9999
values: List[str]
100100

@@ -124,15 +124,19 @@ class WorkforceStageUpdatedFilter(BaseSearchFilter):
124124
"""
125125
Filter for workforce stage updated date
126126
"""
127-
operation: Literal[OperationType.WorkforceStageUpdatedDate]
127+
operation: Literal[
128+
OperationType.
129+
WorkforceStageUpdatedDate] = OperationType.WorkforceStageUpdatedDate
128130
value: DateValue
129131

130132

131133
class WorkforceRequestedDateFilter(BaseSearchFilter):
132134
"""
133135
Filter for workforce requested date
134136
"""
135-
operation: Literal[OperationType.WorforceRequestedDate]
137+
operation: Literal[
138+
OperationType.
139+
WorforceRequestedDate] = OperationType.WorforceRequestedDate
136140
value: DateValue
137141

138142

@@ -156,31 +160,37 @@ class WorkforceRequestedDateRangeFilter(BaseSearchFilter):
156160
"""
157161
Filter for workforce requested date range
158162
"""
159-
operation: Literal[OperationType.WorforceRequestedDate]
163+
operation: Literal[
164+
OperationType.
165+
WorforceRequestedDate] = OperationType.WorforceRequestedDate
160166
value: DateRangeValue
161167

162168

163169
class WorkforceStageUpdatedRangeFilter(BaseSearchFilter):
164170
"""
165171
Filter for workforce stage updated date range
166172
"""
167-
operation: Literal[OperationType.WorkforceStageUpdatedDate]
173+
operation: Literal[
174+
OperationType.
175+
WorkforceStageUpdatedDate] = OperationType.WorkforceStageUpdatedDate
168176
value: DateRangeValue
169177

170178

171179
class TaskCompletedCountFilter(BaseSearchFilter):
172180
"""
173-
Filter for workforce stage updated date
181+
Filter for completed tasks count
174182
"""
175-
operation: Literal[OperationType.TaskCompletedCount]
183+
operation: Literal[
184+
OperationType.TaskCompletedCount] = OperationType.TaskCompletedCount
176185
value: IntegerValue
177186

178187

179188
class TaskRemainingCountFilter(BaseSearchFilter):
180189
"""
181-
Filter for workforce stage updated date
190+
Filter for remaining tasks count
182191
"""
183-
operation: Literal[OperationType.TaskRemainingCount]
192+
operation: Literal[
193+
OperationType.TaskRemainingCount] = OperationType.TaskRemainingCount
184194
value: IntegerValue
185195

186196

libs/labelbox/tests/unit/test_unit_search_filters.py

Lines changed: 26 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,12 @@
55

66
def test_id_filters():
77
filters = [
8-
OrganizationFilter(operation=OperationType.Organization,
9-
operator=IdOperator.Is,
8+
OrganizationFilter(operator=IdOperator.Is,
109
values=["clphb4vd7000cd2wv1ktu5cwa"]),
11-
WorkspaceFilter(operation=OperationType.Workspace,
12-
operator=IdOperator.Is,
10+
WorkspaceFilter(operator=IdOperator.Is,
1311
values=["clphb4vd7000cd2wv1ktu5cwa"]),
14-
TagFilter(operation=OperationType.Tag,
15-
operator=IdOperator.Is,
16-
values=["tag"]),
17-
ProjectStageFilter(operation=OperationType.Stage,
18-
operator=IdOperator.Is,
19-
values=["requested"]),
12+
TagFilter(operator=IdOperator.Is, values=["tag"]),
13+
ProjectStageFilter(operator=IdOperator.Is, values=["requested"]),
2014
]
2115

2216
assert build_search_filter(
@@ -29,16 +23,12 @@ def test_date_filters():
2923
local_time_end = datetime.strptime("2025-01-01", "%Y-%m-%d")
3024

3125
filters = [
32-
WorkforceRequestedDateFilter(
33-
operation=OperationType.WorforceRequestedDate,
34-
value=DateValue(
35-
operator=RangeOperatorWithSingleValue.GreaterThanOrEqual,
36-
value=local_time_start)),
37-
WorkforceStageUpdatedFilter(
38-
operation=OperationType.WorkforceStageUpdatedDate,
39-
value=DateValue(
40-
operator=RangeOperatorWithSingleValue.LessThanOrEqual,
41-
value=local_time_end)),
26+
WorkforceRequestedDateFilter(value=DateValue(
27+
operator=RangeOperatorWithSingleValue.GreaterThanOrEqual,
28+
value=local_time_start)),
29+
WorkforceStageUpdatedFilter(value=DateValue(
30+
operator=RangeOperatorWithSingleValue.LessThanOrEqual,
31+
value=local_time_end)),
4232
]
4333
expected_start = format_iso_datetime(local_time_start)
4434
expected_end = format_iso_datetime(local_time_end)
@@ -49,24 +39,18 @@ def test_date_filters():
4939

5040
def test_date_range_filters():
5141
filters = [
52-
WorkforceRequestedDateRangeFilter(
53-
operation=OperationType.WorforceRequestedDate,
54-
value=DateRangeValue(operator=RangeOperatorWithValue.Between,
55-
value=DateRange(min=datetime.strptime(
56-
"2024-01-01T00:00:00-0800",
57-
"%Y-%m-%dT%H:%M:%S%z"),
58-
max=datetime.strptime(
59-
"2025-01-01T00:00:00-0800",
60-
"%Y-%m-%dT%H:%M:%S%z")))),
61-
WorkforceStageUpdatedRangeFilter(
62-
operation=OperationType.WorkforceStageUpdatedDate,
63-
value=DateRangeValue(operator=RangeOperatorWithValue.Between,
64-
value=DateRange(min=datetime.strptime(
65-
"2024-01-01T00:00:00-0800",
66-
"%Y-%m-%dT%H:%M:%S%z"),
67-
max=datetime.strptime(
68-
"2025-01-01T00:00:00-0800",
69-
"%Y-%m-%dT%H:%M:%S%z")))),
42+
WorkforceRequestedDateRangeFilter(value=DateRangeValue(
43+
operator=RangeOperatorWithValue.Between,
44+
value=DateRange(min=datetime.strptime("2024-01-01T00:00:00-0800",
45+
"%Y-%m-%dT%H:%M:%S%z"),
46+
max=datetime.strptime("2025-01-01T00:00:00-0800",
47+
"%Y-%m-%dT%H:%M:%S%z")))),
48+
WorkforceStageUpdatedRangeFilter(value=DateRangeValue(
49+
operator=RangeOperatorWithValue.Between,
50+
value=DateRange(min=datetime.strptime("2024-01-01T00:00:00-0800",
51+
"%Y-%m-%dT%H:%M:%S%z"),
52+
max=datetime.strptime("2025-01-01T00:00:00-0800",
53+
"%Y-%m-%dT%H:%M:%S%z")))),
7054
]
7155
assert build_search_filter(
7256
filters
@@ -75,16 +59,10 @@ def test_date_range_filters():
7559

7660
def test_task_count_filters():
7761
filters = [
78-
TaskCompletedCountFilter(
79-
operation=OperationType.TaskCompletedCount,
80-
value=IntegerValue(
81-
operator=RangeOperatorWithSingleValue.GreaterThanOrEqual,
82-
value=1)),
83-
TaskRemainingCountFilter(
84-
operation=OperationType.TaskRemainingCount,
85-
value=IntegerValue(
86-
operator=RangeOperatorWithSingleValue.LessThanOrEqual,
87-
value=10)),
62+
TaskCompletedCountFilter(value=IntegerValue(
63+
operator=RangeOperatorWithSingleValue.GreaterThanOrEqual, value=1)),
64+
TaskRemainingCountFilter(value=IntegerValue(
65+
operator=RangeOperatorWithSingleValue.LessThanOrEqual, value=10)),
8866
]
8967

9068
expected = '[{value: {operator: "GREATER_THAN_OR_EQUAL", value: 1}, type: "task_completed_count"}, {value: {operator: "LESS_THAN_OR_EQUAL", value: 10}, type: "task_remaining_count"}]'

0 commit comments

Comments
 (0)