Skip to content

Commit a1f0b4d

Browse files
Merge pull request #724 from Labelbox/kkim/AL-3872
[AL-3872] Fix SDK build tests
2 parents ec8f95e + 2c2cce6 commit a1f0b4d

File tree

7 files changed

+28
-15
lines changed

7 files changed

+28
-15
lines changed

labelbox/client.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1185,9 +1185,13 @@ def _format_failed_rows(rows: List[str],
11851185
errors.extend(
11861186
_format_failed_rows(data['deletedDataRowGlobalKeys'],
11871187
"Data Row deleted"))
1188+
1189+
# Invalid results may contain empty string, so we must filter
1190+
# them prior to checking for PARTIAL_SUCCESS
1191+
filtered_results = list(filter(lambda r: r != '', results))
11881192
if not errors:
11891193
status = CollectionJobStatus.SUCCESS.value
1190-
elif errors and results:
1194+
elif errors and len(filtered_results) > 0:
11911195
status = CollectionJobStatus.PARTIAL_SUCCESS.value
11921196
else:
11931197
status = CollectionJobStatus.FAILURE.value

labelbox/schema/task.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,7 @@ def wait_till_done(self, timeout_seconds=300) -> None:
6363
check_frequency = 2 # frequency of checking, in seconds
6464
while True:
6565
if self.status != "IN_PROGRESS":
66-
if self.status == "FAILED" or (self.status == "COMPLETE" and
67-
self.failed_data_rows
68-
is not None):
66+
if self.errors is not None:
6967
logger.warning(
7068
"There are errors present. Please look at `task.errors` for more details"
7169
)
@@ -87,7 +85,7 @@ def errors(self) -> Optional[Dict[str, Any]]:
8785
result = self._fetch_remote_json()
8886
return result["error"]
8987
elif self.status == "COMPLETE":
90-
return self.failed_data_rows()
88+
return self.failed_data_rows
9189
return None
9290

9391
@property
@@ -105,11 +103,12 @@ def result(self) -> List[Dict[str, Any]]:
105103
'global_key': data_row.get('globalKey'),
106104
} for data_row in result['createdDataRows']]
107105

106+
@property
108107
def failed_data_rows(self) -> Optional[Dict[str, Any]]:
109108
""" Fetch data rows which failed to be created for an import task.
110109
"""
111110
result = self._fetch_remote_json()
112-
if result.get("errors") is not None:
111+
if len(result.get("errors", [])) > 0:
113112
return result["errors"]
114113
else:
115114
return None
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
1+
from time import sleep
2+
3+
14
def test_export_empty_media_attributes(configured_project_with_label):
25
project, _, _, _ = configured_project_with_label
6+
# Wait for exporter to retrieve latest labels
7+
sleep(10)
38
labels = project.label_generator()
49
label = next(labels)
510
assert label.data.media_attributes == {}

tests/integration/test_data_row_metadata.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from datetime import datetime
2+
from time import sleep
23

34
import pytest
45
import uuid
@@ -70,6 +71,8 @@ def make_metadata(dr_id) -> DataRowMetadata:
7071

7172
def test_export_empty_metadata(configured_project_with_label):
7273
project, _, _, _ = configured_project_with_label
74+
# Wait for exporter to retrieve latest labels
75+
sleep(10)
7376
labels = project.label_generator()
7477
label = next(labels)
7578
assert label.data.metadata == []

tests/integration/test_data_rows.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,8 @@ def test_create_data_rows_with_invalid_metadata(dataset, image_url):
352352
DataRow.metadata_fields: fields
353353
}])
354354
task.wait_till_done()
355-
assert task.status == "FAILED"
355+
assert task.status == "COMPLETE"
356+
assert len(task.failed_data_rows) > 0
356357

357358

358359
def test_create_data_rows_with_metadata_missing_value(dataset, image_url):
@@ -632,7 +633,8 @@ def test_data_row_bulk_creation_with_same_global_keys(dataset, sample_image):
632633
}])
633634

634635
task.wait_till_done()
635-
assert task.status == "FAILED"
636+
assert task.status == "COMPLETE"
637+
assert len(task.failed_data_rows) > 0
636638
assert len(list(dataset.data_rows())) == 0
637639

638640
task = dataset.create_data_rows([{

tests/integration/test_global_keys.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -251,9 +251,10 @@ def test_get_data_row_ids_for_invalid_global_keys(client, dataset, image_url):
251251
assert res['status'] == "PARTIAL SUCCESS"
252252

253253
assert len(res['errors']) == 1
254-
assert len(res['results']) == 1
254+
assert len(res['results']) == 2
255255

256256
assert res['errors'][0]['error'] == "Data Row not found"
257257
assert res['errors'][0]['global_key'] == gk_1
258258

259-
assert res['results'][0] == dr_2.uid
259+
assert res['results'][0] == ''
260+
assert res['results'][1] == dr_2.uid

tests/integration/test_task.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,11 @@ def test_task_errors(dataset, image_url):
2323
])
2424
assert task in client.get_user().created_tasks()
2525
task.wait_till_done()
26-
assert task.status == "FAILED"
26+
assert task.status == "COMPLETE"
27+
assert len(task.failed_data_rows) > 0
2728
assert task.errors is not None
28-
assert 'message' in task.errors
29-
with pytest.raises(Exception) as exc_info:
30-
task.result
31-
assert str(exc_info.value).startswith("Job failed. Errors : {")
29+
assert 'message' in task.errors[0]
30+
assert len(task.result) == 0
3231

3332

3433
def test_task_success_json(dataset, image_url):

0 commit comments

Comments
 (0)