From d9521fc5a6b10abf841870aeb08d1db54b713eb1 Mon Sep 17 00:00:00 2001 From: Kevin Xu Date: Thu, 29 Sep 2022 12:20:02 -0400 Subject: [PATCH 1/9] Add 'set_task_metadata', associated test, and example in README --- README.rst | 13 +++++++++++++ scaleapi/__init__.py | 17 +++++++++++++++++ tests/test_client.py | 9 +++++++++ 3 files changed, 39 insertions(+) diff --git a/README.rst b/README.rst index 03f187a..5dfab4c 100644 --- a/README.rst +++ b/README.rst @@ -271,6 +271,19 @@ __ https://docs.scale.com/reference/delete-task-unique-id task.clear_unique_id() +Set A Task's Metadata +^^^^^^^^^^^^^^^^^^^^^^^^^ + +Set a given task's `metadata`. Check out `Scale's API documentation`__ for more information. + +__ https://docs.scale.com/reference/set-metadata + +.. code-block :: python + + # set metadata on a task to be the contents of new_metadata + new_metadata = {'metadata': {'myKey': 'myValue'}} + task = client.set_task_metadata('30553edd0b6a93f8f05f0fee', new_metadata) + Batches _______ diff --git a/scaleapi/__init__.py b/scaleapi/__init__.py index 79e83e0..e86c53d 100644 --- a/scaleapi/__init__.py +++ b/scaleapi/__init__.py @@ -1,3 +1,4 @@ +import json from typing import IO, Dict, Generator, Generic, List, TypeVar, Union from scaleapi.batches import Batch, BatchStatus @@ -114,6 +115,22 @@ def clear_task_unique_id(self, task_id: str) -> Task: endpoint = f"task/{task_id}/unique_id" return Task(self.api.delete_request(endpoint), self) + def set_task_metadata(self, task_id: str, metadata: json) -> Task: + """Sets a task's metadata and returns the associated task. + + Args: + task_id (str): + Task id + metadata (json): + metadata to set + + Returns: + Task + """ + payload = {'metadata': metadata} + endpoint = f"task/{task_id}/setMetadata" + return Task(self.api.post_request(endpoint, body=payload), self) + def tasks(self, **kwargs) -> Tasklist: """Returns a list of your tasks. Returns up to 100 at a time, to get more, use the diff --git a/tests/test_client.py b/tests/test_client.py index 48b9b7f..845cc4d 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -93,6 +93,15 @@ def test_clear_unique_id(): assert "unique_id" not in task.as_dict() +def test_set_metadata(): + unique_id = str(uuid.uuid4()) + original_task = make_a_task(unique_id) + new_metadata = {'metadata': {'myKey': 'myValue'}} + updated_task = client.set_task_metadata(original_task.id, new_metadata) + assert original_task.metadata == {} + assert updated_task.metadata == new_metadata + + def test_categorize_ok(): client.create_task( TaskType.Categorization, From 2094b9a8f278390aad3be077d172a881cab935db Mon Sep 17 00:00:00 2001 From: Kevin Xu Date: Thu, 29 Sep 2022 13:37:47 -0400 Subject: [PATCH 2/9] update formatting with black --- scaleapi/__init__.py | 2 +- tests/test_client.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scaleapi/__init__.py b/scaleapi/__init__.py index e86c53d..39c5dd4 100644 --- a/scaleapi/__init__.py +++ b/scaleapi/__init__.py @@ -127,7 +127,7 @@ def set_task_metadata(self, task_id: str, metadata: json) -> Task: Returns: Task """ - payload = {'metadata': metadata} + payload = {"metadata": metadata} endpoint = f"task/{task_id}/setMetadata" return Task(self.api.post_request(endpoint, body=payload), self) diff --git a/tests/test_client.py b/tests/test_client.py index 845cc4d..4d31526 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -96,7 +96,7 @@ def test_clear_unique_id(): def test_set_metadata(): unique_id = str(uuid.uuid4()) original_task = make_a_task(unique_id) - new_metadata = {'metadata': {'myKey': 'myValue'}} + new_metadata = {"metadata": {"myKey": "myValue"}} updated_task = client.set_task_metadata(original_task.id, new_metadata) assert original_task.metadata == {} assert updated_task.metadata == new_metadata From e2c2d40aae91139536e036247de214170fb5cc9e Mon Sep 17 00:00:00 2001 From: Kevin Xu Date: Thu, 29 Sep 2022 15:53:14 -0400 Subject: [PATCH 3/9] change param from json to dict --- scaleapi/__init__.py | 4 ++-- tests/test_client.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/scaleapi/__init__.py b/scaleapi/__init__.py index 39c5dd4..0235390 100644 --- a/scaleapi/__init__.py +++ b/scaleapi/__init__.py @@ -115,13 +115,13 @@ def clear_task_unique_id(self, task_id: str) -> Task: endpoint = f"task/{task_id}/unique_id" return Task(self.api.delete_request(endpoint), self) - def set_task_metadata(self, task_id: str, metadata: json) -> Task: + def set_task_metadata(self, task_id: str, metadata: dict) -> Task: """Sets a task's metadata and returns the associated task. Args: task_id (str): Task id - metadata (json): + metadata (dict): metadata to set Returns: diff --git a/tests/test_client.py b/tests/test_client.py index 4d31526..b74f2c4 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -96,7 +96,7 @@ def test_clear_unique_id(): def test_set_metadata(): unique_id = str(uuid.uuid4()) original_task = make_a_task(unique_id) - new_metadata = {"metadata": {"myKey": "myValue"}} + new_metadata = {"myKey": "myValue"} updated_task = client.set_task_metadata(original_task.id, new_metadata) assert original_task.metadata == {} assert updated_task.metadata == new_metadata From 451bdfa5c85053be6f27399242ba6889d3220eab Mon Sep 17 00:00:00 2001 From: Kevin Xu Date: Thu, 29 Sep 2022 16:03:41 -0400 Subject: [PATCH 4/9] remove callback url from test_documenttranscription_ok --- tests/test_client.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/test_client.py b/tests/test_client.py index b74f2c4..c7d5156 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -178,7 +178,6 @@ def test_imageannotation_fail(): def test_documenttranscription_ok(): client.create_task( TaskType.DocumentTranscription, - callback_url="http://www.example.com/callback", instruction="Please transcribe this receipt.", attachment="http://document.scale.com/receipt-20200519.jpg", features=[{"type": "block", "label": "barcode"}], From 9b3a89e6de115280b932cdbc62146da5a14bd191 Mon Sep 17 00:00:00 2001 From: Kevin Xu Date: Thu, 29 Sep 2022 16:05:21 -0400 Subject: [PATCH 5/9] remove unused import --- scaleapi/__init__.py | 1 - 1 file changed, 1 deletion(-) diff --git a/scaleapi/__init__.py b/scaleapi/__init__.py index 0235390..7551d4c 100644 --- a/scaleapi/__init__.py +++ b/scaleapi/__init__.py @@ -1,4 +1,3 @@ -import json from typing import IO, Dict, Generator, Generic, List, TypeVar, Union from scaleapi.batches import Batch, BatchStatus From 73bc5f22c54b5517bd9535f4066c3f9f41e1cac9 Mon Sep 17 00:00:00 2001 From: Kevin Xu Date: Thu, 29 Sep 2022 16:09:49 -0400 Subject: [PATCH 6/9] update logic to reflect change to API endpoint --- scaleapi/__init__.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/scaleapi/__init__.py b/scaleapi/__init__.py index 7551d4c..e1e6bb6 100644 --- a/scaleapi/__init__.py +++ b/scaleapi/__init__.py @@ -126,9 +126,8 @@ def set_task_metadata(self, task_id: str, metadata: dict) -> Task: Returns: Task """ - payload = {"metadata": metadata} endpoint = f"task/{task_id}/setMetadata" - return Task(self.api.post_request(endpoint, body=payload), self) + return Task(self.api.post_request(endpoint, body=metadata), self) def tasks(self, **kwargs) -> Tasklist: """Returns a list of your tasks. From bd8d68a89d7fd71167f3ed9f4ef318d202f1af93 Mon Sep 17 00:00:00 2001 From: Kevin Xu Date: Thu, 29 Sep 2022 16:16:32 -0400 Subject: [PATCH 7/9] update README --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 5dfab4c..0192384 100644 --- a/README.rst +++ b/README.rst @@ -281,7 +281,7 @@ __ https://docs.scale.com/reference/set-metadata .. code-block :: python # set metadata on a task to be the contents of new_metadata - new_metadata = {'metadata': {'myKey': 'myValue'}} + new_metadata = {'myKey': 'myValue'} task = client.set_task_metadata('30553edd0b6a93f8f05f0fee', new_metadata) Batches From 3030ec413ba618619f8651a511cabd99a829e19b Mon Sep 17 00:00:00 2001 From: Kevin Xu Date: Thu, 6 Oct 2022 17:22:58 -0400 Subject: [PATCH 8/9] bump to version 2.10.0 --- scaleapi/_version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scaleapi/_version.py b/scaleapi/_version.py index 5303485..9babeef 100644 --- a/scaleapi/_version.py +++ b/scaleapi/_version.py @@ -1,2 +1,2 @@ -__version__ = "2.9.0" +__version__ = "2.10.0" __package_name__ = "scaleapi" From 01fbc20c9d21ff0ec52621047c63e2811557e765 Mon Sep 17 00:00:00 2001 From: Kevin Xu Date: Fri, 7 Oct 2022 09:42:00 -0400 Subject: [PATCH 9/9] add set_metadata to Task object, update tests --- README.rst | 9 +++++++-- scaleapi/__init__.py | 4 ++-- scaleapi/tasks.py | 4 ++++ tests/test_client.py | 10 ++++++++++ 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/README.rst b/README.rst index 0192384..a21b5d2 100644 --- a/README.rst +++ b/README.rst @@ -274,16 +274,21 @@ __ https://docs.scale.com/reference/delete-task-unique-id Set A Task's Metadata ^^^^^^^^^^^^^^^^^^^^^^^^^ -Set a given task's `metadata`. Check out `Scale's API documentation`__ for more information. +Set a given task's ``metadata``. Check out `Scale's API documentation`__ for more information. __ https://docs.scale.com/reference/set-metadata .. code-block :: python - # set metadata on a task to be the contents of new_metadata + # set metadata on a task by specifying task id new_metadata = {'myKey': 'myValue'} task = client.set_task_metadata('30553edd0b6a93f8f05f0fee', new_metadata) + # set metadata on a task object + task = client.get_task('30553edd0b6a93f8f05f0fee') + new_metadata = {'myKey': 'myValue'} + task.set_metadata(new_metadata) + Batches _______ diff --git a/scaleapi/__init__.py b/scaleapi/__init__.py index e1e6bb6..e6bb922 100644 --- a/scaleapi/__init__.py +++ b/scaleapi/__init__.py @@ -114,13 +114,13 @@ def clear_task_unique_id(self, task_id: str) -> Task: endpoint = f"task/{task_id}/unique_id" return Task(self.api.delete_request(endpoint), self) - def set_task_metadata(self, task_id: str, metadata: dict) -> Task: + def set_task_metadata(self, task_id: str, metadata: Dict) -> Task: """Sets a task's metadata and returns the associated task. Args: task_id (str): Task id - metadata (dict): + metadata (Dict): metadata to set Returns: diff --git a/scaleapi/tasks.py b/scaleapi/tasks.py index 12fcddb..6cc1513 100644 --- a/scaleapi/tasks.py +++ b/scaleapi/tasks.py @@ -95,3 +95,7 @@ def update_unique_id(self, unique_id: str): def clear_unique_id(self): """Clears unique_id of a task""" self._client.clear_task_unique_id(self.id) + + def set_metadata(self, metadata: dict): + """Sets the metadata of a task""" + self._client.set_task_metadata(self.id, metadata) diff --git a/tests/test_client.py b/tests/test_client.py index c7d5156..ed3ddc1 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -102,6 +102,16 @@ def test_set_metadata(): assert updated_task.metadata == new_metadata +def test_task_set_metadata(): + unique_id = str(uuid.uuid4()) + task = make_a_task(unique_id) + assert task.metadata == {} + new_metadata = {"fromTaskKey": "fromTaskValue"} + task.set_metadata(new_metadata) + task.refresh() + assert task.metadata == new_metadata + + def test_categorize_ok(): client.create_task( TaskType.Categorization,