Skip to content

Commit d71a290

Browse files
authored
[PLT-1440] Vb/labeling dashboard filter updates (#1780)
1 parent d7c8759 commit d71a290

File tree

5 files changed

+31
-36
lines changed

5 files changed

+31
-36
lines changed

libs/labelbox/src/labelbox/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2436,7 +2436,7 @@ def get_labeling_service_dashboards(
24362436
>>> seven_days_ago = (datetime.now() - timedelta(days=7)).strftime("%Y-%m-%d")
24372437
>>> workforce_requested_filter_before = WorkforceRequestedDateFilter(
24382438
>>> operation=OperationType.WorforceRequestedDate,
2439-
>>> value=DateValue(operator=RangeOperatorWithSingleValue.GreaterThanOrEqual,
2439+
>>> value=DateValue(operator=RangeDateTimeOperatorWithSingleValue.GreaterThanOrEqual,
24402440
>>> value=seven_days_ago))
24412441
>>> labeling_service_dashboard = [ld for ld in project.client.get_labeling_service_dashboards(search_query=[workforce_requested_filter_before])]
24422442

libs/labelbox/src/labelbox/schema/labeling_service_dashboard.py

Lines changed: 13 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@
1919
boostUpdatedAt
2020
boostRequestedBy
2121
boostStatus
22-
dataRowsCount
23-
dataRowsInReviewCount
24-
dataRowsInReworkCount
25-
dataRowsDoneCount
22+
tasksCompletedCount
23+
tasksPercentCompleted
24+
tasksRemainingCount
25+
tasksTotalCount
2626
mediaType
2727
editorTaskType
2828
tags
@@ -43,8 +43,12 @@ class LabelingServiceDashboard(BaseModel):
4343
id (str): project id
4444
name (str): project name
4545
status (LabelingServiceStatus): status of the labeling service
46-
tasks_completed (int): number of data rows completed
47-
tasks_remaining (int): number of data rows that have not started
46+
tasks_completed_count (int): number of data rows completed
47+
tasks_remaining_count (int): number of data rows that have not started
48+
tasks_total_count (int): total number of data rows in the project
49+
tags (List[LabelingServiceDashboardTags]): tags associated with the project
50+
media_type (MediaType): media type of the project
51+
editor_task_type (EditorTaskType): editor task type of the project
4852
client (Any): labelbox client
4953
"""
5054
id: str = Field(frozen=True)
@@ -53,10 +57,9 @@ class LabelingServiceDashboard(BaseModel):
5357
updated_at: Optional[datetime] = Field(frozen=True, default=None)
5458
created_by_id: Optional[str] = Field(frozen=True, default=None)
5559
status: LabelingServiceStatus = Field(frozen=True, default=None)
56-
data_rows_count: int = Field(frozen=True)
57-
data_rows_in_review_count: int = Field(frozen=True)
58-
data_rows_in_rework_count: int = Field(frozen=True)
59-
data_rows_done_count: int = Field(frozen=True)
60+
tasks_completed_count: int = Field(frozen=True)
61+
tasks_remaining_count: int = Field(frozen=True)
62+
tasks_total_count: int = Field(frozen=True)
6063
media_type: Optional[MediaType] = Field(frozen=True, default=None)
6164
editor_task_type: EditorTaskType = Field(frozen=True, default=None)
6265
tags: List[LabelingServiceDashboardTags] = Field(frozen=True, default=None)
@@ -69,20 +72,6 @@ def __init__(self, **kwargs):
6972
raise RuntimeError(
7073
"Please enable experimental in client to use LabelingService")
7174

72-
@property
73-
def tasks_completed(self):
74-
"""
75-
Count how many data rows have been completed (i.e. in the Done queue)
76-
"""
77-
return self.data_rows_done_count
78-
79-
@property
80-
def tasks_remaining(self):
81-
"""
82-
Count how many data rows have not been completed
83-
"""
84-
return self.data_rows_count - self.data_rows_done_count
85-
8675
@property
8776
def service_type(self):
8877
"""
@@ -202,7 +191,5 @@ def convert_boost_data(cls, data):
202191
def dict(self, *args, **kwargs):
203192
row = super().dict(*args, **kwargs)
204193
row.pop('client')
205-
row['tasks_completed'] = self.tasks_completed
206-
row['tasks_remaining'] = self.tasks_remaining
207194
row['service_type'] = self.service_type
208195
return row

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,14 @@ class RangeOperatorWithSingleValue(Enum):
5959
LessThanOrEqual = 'LESS_THAN_OR_EQUAL'
6060

6161

62+
class RangeDateTimeOperatorWithSingleValue(Enum):
63+
"""
64+
Supported operators for dates
65+
"""
66+
GreaterThanOrEqual = 'GREATER_THAN_OR_EQUAL'
67+
LessThanOrEqual = 'LESS_THAN_OR_EQUAL'
68+
69+
6270
class RangeOperatorWithValue(Enum):
6371
"""
6472
Supported operators for date ranges
@@ -126,7 +134,7 @@ class DateValue(BaseSearchFilter):
126134
so for a string '2024-01-01' that is run on a computer in PST, we would convert it to '2024-01-01T08:00:00Z'
127135
while the same string in EST will get converted to '2024-01-01T05:00:00Z'
128136
"""
129-
operator: RangeOperatorWithSingleValue
137+
operator: RangeDateTimeOperatorWithSingleValue
130138
value: datetime.datetime
131139

132140

libs/labelbox/tests/integration/test_labeling_dashboard.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
from datetime import datetime, timedelta
2-
from labelbox.exceptions import ResourceNotFoundError
32
from labelbox.schema.labeling_service import LabelingServiceStatus
43
from labelbox.schema.ontology_kind import EditorTaskType
54
from labelbox.schema.media_type import MediaType
6-
from labelbox.schema.search_filters import IntegerValue, RangeOperatorWithSingleValue, DateRange, RangeOperatorWithValue, DateRangeValue, DateValue, IdOperator, OperationType, OrganizationFilter, TaskCompletedCountFilter, WorkforceRequestedDateFilter, WorkforceRequestedDateRangeFilter, WorkspaceFilter, TaskRemainingCountFilter
5+
from labelbox.schema.search_filters import IntegerValue, RangeDateTimeOperatorWithSingleValue, RangeOperatorWithSingleValue, DateRange, RangeOperatorWithValue, DateRangeValue, DateValue, IdOperator, OperationType, OrganizationFilter, TaskCompletedCountFilter, WorkforceRequestedDateFilter, WorkforceRequestedDateRangeFilter, WorkspaceFilter, TaskRemainingCountFilter
76

87

98
def test_request_labeling_service_dashboard(requested_labeling_service):
@@ -37,13 +36,14 @@ def test_request_labeling_service_dashboard_filters(requested_labeling_service):
3736
workforce_requested_filter_before = WorkforceRequestedDateFilter(
3837
operation=OperationType.WorforceRequestedDate,
3938
value=DateValue(
40-
operator=RangeOperatorWithSingleValue.GreaterThanOrEqual,
39+
operator=RangeDateTimeOperatorWithSingleValue.GreaterThanOrEqual,
4140
value=datetime.strptime("2024-01-01", "%Y-%m-%d")))
4241
year_from_now = (datetime.now() + timedelta(days=365))
4342
workforce_requested_filter_after = WorkforceRequestedDateFilter(
4443
operation=OperationType.WorforceRequestedDate,
45-
value=DateValue(operator=RangeOperatorWithSingleValue.LessThanOrEqual,
46-
value=year_from_now))
44+
value=DateValue(
45+
operator=RangeDateTimeOperatorWithSingleValue.LessThanOrEqual,
46+
value=year_from_now))
4747

4848
labeling_service_dashboard = project.client.get_labeling_service_dashboards(
4949
search_query=[

libs/labelbox/tests/unit/test_unit_search_filters.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from datetime import datetime
22
from labelbox.schema.labeling_service import LabelingServiceStatus
3-
from labelbox.schema.search_filters import IntegerValue, RangeOperatorWithSingleValue, DateRange, RangeOperatorWithValue, DateRangeValue, DateValue, IdOperator, OperationType, OrganizationFilter, ProjectStageFilter, SharedWithOrganizationFilter, TagFilter, TaskCompletedCountFilter, TaskRemainingCountFilter, WorkforceRequestedDateFilter, WorkforceRequestedDateRangeFilter, WorkforceStageUpdatedFilter, WorkforceStageUpdatedRangeFilter, WorkspaceFilter, build_search_filter
3+
from labelbox.schema.search_filters import IntegerValue, RangeDateTimeOperatorWithSingleValue, RangeOperatorWithSingleValue, DateRange, RangeOperatorWithValue, DateRangeValue, DateValue, IdOperator, OperationType, OrganizationFilter, ProjectStageFilter, SharedWithOrganizationFilter, TagFilter, TaskCompletedCountFilter, TaskRemainingCountFilter, WorkforceRequestedDateFilter, WorkforceRequestedDateRangeFilter, WorkforceStageUpdatedFilter, WorkforceStageUpdatedRangeFilter, WorkspaceFilter, build_search_filter
44
from labelbox.utils import format_iso_datetime
55

66

@@ -28,10 +28,10 @@ def test_date_filters():
2828

2929
filters = [
3030
WorkforceRequestedDateFilter(value=DateValue(
31-
operator=RangeOperatorWithSingleValue.GreaterThanOrEqual,
31+
operator=RangeDateTimeOperatorWithSingleValue.GreaterThanOrEqual,
3232
value=local_time_start)),
3333
WorkforceStageUpdatedFilter(value=DateValue(
34-
operator=RangeOperatorWithSingleValue.LessThanOrEqual,
34+
operator=RangeDateTimeOperatorWithSingleValue.LessThanOrEqual,
3535
value=local_time_end)),
3636
]
3737
expected_start = format_iso_datetime(local_time_start)

0 commit comments

Comments
 (0)