Skip to content

Commit 5c498a6

Browse files
Merge pull request #585 from Labelbox/kkim/AL-2290
[AL-2290] Add result field to Task and get_result()
2 parents 96990cd + 5954537 commit 5c498a6

File tree

3 files changed

+52
-1
lines changed

3 files changed

+52
-1
lines changed

labelbox/schema/task.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import logging
2+
import requests
23
import time
34
from typing import TYPE_CHECKING, Optional
45

@@ -31,6 +32,7 @@ class Task(DbObject):
3132
name = Field.String("name")
3233
status = Field.String("status")
3334
completion_percentage = Field.Float("completion_percentage")
35+
result = Field.String("result")
3436
_user: Optional["User"] = None
3537

3638
# Relationships
@@ -65,3 +67,13 @@ def wait_till_done(self, timeout_seconds=300) -> None:
6567
timeout_seconds -= check_frequency
6668
time.sleep(sleep_time_seconds)
6769
self.refresh()
70+
71+
def errors(self):
72+
""" Downloads the result file from Task
73+
"""
74+
if self.status == "FAILED" and self.result:
75+
response = requests.get(self.result)
76+
response.raise_for_status()
77+
data = response.json()
78+
return data.get('error')
79+
return None

mypy.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@ ignore_missing_imports = True
1111
ignore_errors = True
1212

1313
[mypy-labelbox]
14-
ignore_errors = True
14+
ignore_errors = True

tests/integration/test_task.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
from labelbox import DataRow
2+
from labelbox.schema.data_row_metadata import DataRowMetadataField
3+
4+
EMBEDDING_SCHEMA_ID = "ckpyije740000yxdk81pbgjdc"
5+
6+
7+
def test_task_errors(dataset, image_url):
8+
client = dataset.client
9+
embeddings = [0.0] * 128
10+
task = dataset.create_data_rows([
11+
{
12+
DataRow.row_data:
13+
image_url,
14+
DataRow.metadata_fields: [
15+
DataRowMetadataField(schema_id=EMBEDDING_SCHEMA_ID,
16+
value=embeddings),
17+
DataRowMetadataField(schema_id=EMBEDDING_SCHEMA_ID,
18+
value=embeddings)
19+
]
20+
},
21+
])
22+
assert task in client.get_user().created_tasks()
23+
task.wait_till_done()
24+
assert task.status == "FAILED"
25+
assert task.errors() is not None
26+
assert 'message' in task.errors()
27+
28+
29+
def test_task_success(dataset, image_url):
30+
client = dataset.client
31+
task = dataset.create_data_rows([
32+
{
33+
DataRow.row_data: image_url,
34+
},
35+
])
36+
assert task in client.get_user().created_tasks()
37+
task.wait_till_done()
38+
assert task.status == "COMPLETE"
39+
assert task.errors() is None

0 commit comments

Comments
 (0)