Skip to content

Commit b7ffab5

Browse files
Add 'set_task_metadata', associated test, and example in README (#56)
* Add 'set_task_metadata', 'Task.set_metadata' * Update tests, README, bump version
1 parent 4c46e1a commit b7ffab5

File tree

5 files changed

+57
-2
lines changed

5 files changed

+57
-2
lines changed

README.rst

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,24 @@ __ https://docs.scale.com/reference/delete-task-unique-id
271271
task.clear_unique_id()
272272
273273
274+
Set A Task's Metadata
275+
^^^^^^^^^^^^^^^^^^^^^^^^^
276+
277+
Set a given task's ``metadata``. Check out `Scale's API documentation`__ for more information.
278+
279+
__ https://docs.scale.com/reference/set-metadata
280+
281+
.. code-block :: python
282+
283+
# set metadata on a task by specifying task id
284+
new_metadata = {'myKey': 'myValue'}
285+
task = client.set_task_metadata('30553edd0b6a93f8f05f0fee', new_metadata)
286+
287+
# set metadata on a task object
288+
task = client.get_task('30553edd0b6a93f8f05f0fee')
289+
new_metadata = {'myKey': 'myValue'}
290+
task.set_metadata(new_metadata)
291+
274292
Batches
275293
_______
276294

scaleapi/__init__.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,21 @@ def clear_task_unique_id(self, task_id: str) -> Task:
114114
endpoint = f"task/{task_id}/unique_id"
115115
return Task(self.api.delete_request(endpoint), self)
116116

117+
def set_task_metadata(self, task_id: str, metadata: Dict) -> Task:
118+
"""Sets a task's metadata and returns the associated task.
119+
120+
Args:
121+
task_id (str):
122+
Task id
123+
metadata (Dict):
124+
metadata to set
125+
126+
Returns:
127+
Task
128+
"""
129+
endpoint = f"task/{task_id}/setMetadata"
130+
return Task(self.api.post_request(endpoint, body=metadata), self)
131+
117132
def tasks(self, **kwargs) -> Tasklist:
118133
"""Returns a list of your tasks.
119134
Returns up to 100 at a time, to get more, use the

scaleapi/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
__version__ = "2.9.0"
1+
__version__ = "2.10.0"
22
__package_name__ = "scaleapi"

scaleapi/tasks.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,3 +95,7 @@ def update_unique_id(self, unique_id: str):
9595
def clear_unique_id(self):
9696
"""Clears unique_id of a task"""
9797
self._client.clear_task_unique_id(self.id)
98+
99+
def set_metadata(self, metadata: dict):
100+
"""Sets the metadata of a task"""
101+
self._client.set_task_metadata(self.id, metadata)

tests/test_client.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,25 @@ def test_clear_unique_id():
9393
assert "unique_id" not in task.as_dict()
9494

9595

96+
def test_set_metadata():
97+
unique_id = str(uuid.uuid4())
98+
original_task = make_a_task(unique_id)
99+
new_metadata = {"myKey": "myValue"}
100+
updated_task = client.set_task_metadata(original_task.id, new_metadata)
101+
assert original_task.metadata == {}
102+
assert updated_task.metadata == new_metadata
103+
104+
105+
def test_task_set_metadata():
106+
unique_id = str(uuid.uuid4())
107+
task = make_a_task(unique_id)
108+
assert task.metadata == {}
109+
new_metadata = {"fromTaskKey": "fromTaskValue"}
110+
task.set_metadata(new_metadata)
111+
task.refresh()
112+
assert task.metadata == new_metadata
113+
114+
96115
def test_categorize_ok():
97116
client.create_task(
98117
TaskType.Categorization,
@@ -169,7 +188,6 @@ def test_imageannotation_fail():
169188
def test_documenttranscription_ok():
170189
client.create_task(
171190
TaskType.DocumentTranscription,
172-
callback_url="http://www.example.com/callback",
173191
instruction="Please transcribe this receipt.",
174192
attachment="http://document.scale.com/receipt-20200519.jpg",
175193
features=[{"type": "block", "label": "barcode"}],

0 commit comments

Comments
 (0)