Skip to content

Commit 96aa99c

Browse files
author
Val Brodsky
committed
Fix tests
1 parent 2fd7a2c commit 96aa99c

File tree

4 files changed

+53
-35
lines changed

4 files changed

+53
-35
lines changed

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,10 @@ class DateValue(BaseSearchFilter):
104104
Date formats:
105105
datetime: an existing datetime object
106106
str the following formats are accepted: YYYY-MM-DD[T]HH:MM[:SS[.ffffff]][Z or [±]HH[:]MM]
107-
default timezone is UTC
107+
NOTE
108+
if a date / datetime string is passed without a timezone, we will assume the time is UTC and convert it to a local timezone
109+
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'
110+
while the same string in EST will get converted to '2024-01-01T05:00:00Z'
108111
"""
109112
operator: DateOperator
110113
value: datetime.datetime

libs/labelbox/tests/integration/test_labeling_dashboard.py

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@
33
from labelbox.schema.search_filters import DateOperator, DateRange, DateRangeOperator, DateRangeValue, DateValue, IdOperator, OperationType, OrganizationFilter, WorkforceRequestedDateFilter, WorkforceRequestedDateRangeFilter, WorkspaceFilter
44

55

6-
def test_request_labeling_service_dashboard(
7-
rand_gen, offline_chat_evaluation_project, chat_evaluation_ontology,
8-
offline_conversational_data_row):
6+
def test_request_labeling_service_dashboard(rand_gen,
7+
offline_chat_evaluation_project,
8+
chat_evaluation_ontology,
9+
offline_conversational_data_row):
910
project = offline_chat_evaluation_project
1011
project.connect_ontology(chat_evaluation_ontology)
1112

@@ -30,50 +31,54 @@ def test_request_labeling_service_dashboard_filters(requested_labeling_service):
3031
project, _ = requested_labeling_service
3132

3233
organization = project.client.get_organization()
33-
org_filter = OrganizationFilter(
34-
operation=OperationType.Organization,
35-
operator=IdOperator.Is,
36-
values=[organization.uid])
34+
org_filter = OrganizationFilter(operation=OperationType.Organization,
35+
operator=IdOperator.Is,
36+
values=[organization.uid])
3737

3838
labeling_service_dashboard = [
39-
ld for ld in project.client.get_labeling_service_dashboards(search_query=[org_filter])
39+
ld for ld in project.client.get_labeling_service_dashboards(
40+
search_query=[org_filter])
4041
][0]
4142
assert labeling_service_dashboard is not None
4243

4344
workforce_requested_filter_before = WorkforceRequestedDateFilter(
4445
operation=OperationType.WorforceRequestedDate,
4546
value=DateValue(operator=DateOperator.GreaterThanOrEqual,
46-
value="2024-01-01"))
47-
year_from_now = (datetime.now() + timedelta(days=365)).strftime("%Y-%m-%d")
47+
value=datetime.strptime("2024-01-01", "%Y-%m-%d")))
48+
year_from_now = (datetime.now() + timedelta(days=365))
4849
workforce_requested_filter_after = WorkforceRequestedDateFilter(
4950
operation=OperationType.WorforceRequestedDate,
5051
value=DateValue(operator=DateOperator.LessThanOrEqual,
5152
value=year_from_now))
5253

5354
labeling_service_dashboard = [
54-
ld for ld in project.client.get_labeling_service_dashboards(search_query=[workforce_requested_filter_after, workforce_requested_filter_before])
55+
ld
56+
for ld in project.client.get_labeling_service_dashboards(search_query=[
57+
workforce_requested_filter_after, workforce_requested_filter_before
58+
])
5559
][0]
5660
assert labeling_service_dashboard is not None
5761

5862
workforce_date_range_filter = WorkforceRequestedDateRangeFilter(
5963
operation=OperationType.WorforceRequestedDate,
6064
value=DateRangeValue(operator=DateRangeOperator.Between,
61-
value=DateRange(min="2024-01-01",
62-
max=year_from_now)))
65+
value=DateRange(min="2024-01-01T00:00:00-0800",
66+
max=year_from_now)))
6367

6468
labeling_service_dashboard = [
65-
ld for ld in project.client.get_labeling_service_dashboards(search_query=[workforce_date_range_filter])
69+
ld for ld in project.client.get_labeling_service_dashboards(
70+
search_query=[workforce_date_range_filter])
6671
][0]
6772
assert labeling_service_dashboard is not None
6873

6974
# with non existing data
7075
workspace_id = "clzzu4rme000008l42vnl4kre"
71-
workspace_filter = WorkspaceFilter(
72-
operation=OperationType.Workspace,
73-
operator=IdOperator.Is,
74-
values=[workspace_id])
76+
workspace_filter = WorkspaceFilter(operation=OperationType.Workspace,
77+
operator=IdOperator.Is,
78+
values=[workspace_id])
7579
labeling_service_dashboard = [
76-
ld for ld in project.client.get_labeling_service_dashboards(search_query=[workspace_filter])
80+
ld for ld in project.client.get_labeling_service_dashboards(
81+
search_query=[workspace_filter])
7782
]
7883
assert len(labeling_service_dashboard) == 0
7984
assert labeling_service_dashboard == []

libs/labelbox/tests/integration/test_task.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
import json
2-
from labelbox.schema.disconnected_task import DisconnectedTask
3-
import pytest
42
import collections.abc
53
from labelbox import DataRow
64
from labelbox.schema.data_row_metadata import DataRowMetadataField

libs/labelbox/tests/unit/test_unit_search_filters.py

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
from datetime import date, datetime
1+
from datetime import datetime
22
from labelbox.schema.search_filters import DateOperator, DateRange, DateRangeOperator, DateRangeValue, DateValue, IdOperator, OperationType, OrganizationFilter, ProjectStageFilter, TagFilter, WorkforceRequestedDateFilter, WorkforceRequestedDateRangeFilter, WorkforceStageUpdatedFilter, WorkforceStageUpdatedRangeFilter, WorkspaceFilter, build_search_filter
3+
from labelbox.utils import format_iso_datetime
34

45

56
def test_id_filters():
@@ -24,35 +25,46 @@ def test_id_filters():
2425

2526

2627
def test_date_filters():
28+
local_time_start = datetime.strptime("2024-01-01", "%Y-%m-%d")
29+
local_time_end = datetime.strptime("2025-01-01", "%Y-%m-%d")
30+
2731
filters = [
2832
WorkforceRequestedDateFilter(
2933
operation=OperationType.WorforceRequestedDate,
3034
value=DateValue(operator=DateOperator.GreaterThanOrEqual,
31-
value=datetime.strptime("2024-01-01", "%Y-%m-%d"))),
35+
value=local_time_start)),
3236
WorkforceStageUpdatedFilter(
3337
operation=OperationType.WorkforceStageUpdatedDate,
3438
value=DateValue(operator=DateOperator.LessThanOrEqual,
35-
value=datetime.strptime("2025-01-01", "%Y-%m-%d"))),
39+
value=local_time_end)),
3640
]
37-
assert build_search_filter(
38-
filters
39-
) == '[{value: {operator: "GREATER_THAN_OR_EQUAL", value: "2024-01-01T08:00:00Z"}, type: "workforce_requested_at"}, {value: {operator: "LESS_THAN_OR_EQUAL", value: "2025-01-01T08:00:00Z"}, type: "workforce_stage_updated_at"}]'
41+
expected_start = format_iso_datetime(local_time_start)
42+
expected_end = format_iso_datetime(local_time_end)
43+
44+
expected = '[{value: {operator: "GREATER_THAN_OR_EQUAL", value: "' + expected_start + '"}, type: "workforce_requested_at"}, {value: {operator: "LESS_THAN_OR_EQUAL", value: "' + expected_end + '"}, type: "workforce_stage_updated_at"}]'
45+
assert build_search_filter(filters) == expected
4046

4147

4248
def test_date_range_filters():
4349
filters = [
4450
WorkforceRequestedDateRangeFilter(
4551
operation=OperationType.WorforceRequestedDate,
46-
value=DateRangeValue(
47-
operator=DateRangeOperator.Between,
48-
value=DateRange(min=datetime.strptime("2024-01-01", "%Y-%m-%d"),
49-
max=datetime.strptime("2025-01-01",
50-
"%Y-%m-%d")))),
52+
value=DateRangeValue(operator=DateRangeOperator.Between,
53+
value=DateRange(min=datetime.strptime(
54+
"2024-01-01T00:00:00-0800",
55+
"%Y-%m-%dT%H:%M:%S%z"),
56+
max=datetime.strptime(
57+
"2025-01-01T00:00:00-0800",
58+
"%Y-%m-%dT%H:%M:%S%z")))),
5159
WorkforceStageUpdatedRangeFilter(
5260
operation=OperationType.WorkforceStageUpdatedDate,
5361
value=DateRangeValue(operator=DateRangeOperator.Between,
54-
value=DateRange(min="2024-01-01T08:00:00Z",
55-
max="2025-01-01T08:00:00Z")))
62+
value=DateRange(min=datetime.strptime(
63+
"2024-01-01T00:00:00-0800",
64+
"%Y-%m-%dT%H:%M:%S%z"),
65+
max=datetime.strptime(
66+
"2025-01-01T00:00:00-0800",
67+
"%Y-%m-%dT%H:%M:%S%z")))),
5668
]
5769
assert build_search_filter(
5870
filters

0 commit comments

Comments
 (0)