Skip to content

Commit 7601c29

Browse files
authored
Merge pull request #31 from scaleapi/sasha/list_autotags
Sasha/list autotags
2 parents f45727c + a7ce43b commit 7601c29

File tree

5 files changed

+53
-26
lines changed

5 files changed

+53
-26
lines changed

nucleus/__init__.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@
103103
DATASET_LENGTH_KEY,
104104
NAME_KEY,
105105
ANNOTATIONS_KEY,
106+
AUTOTAGS_KEY,
106107
)
107108
from .model import Model
108109
from .errors import (
@@ -838,6 +839,19 @@ def delete_slice(self, slice_id: str) -> dict:
838839
)
839840
return response
840841

842+
def list_autotags(self, dataset_id: str) -> List[str]:
843+
"""
844+
Fetches a list of autotags for a given dataset id
845+
:param dataset_id: internally controlled dataset_id
846+
:return: List[str] representing autotag_ids
847+
"""
848+
response = self._make_request(
849+
{},
850+
f"{dataset_id}/list_autotags",
851+
requests_command=requests.get,
852+
)
853+
return response[AUTOTAGS_KEY] if AUTOTAGS_KEY in response else response
854+
841855
def delete_model(self, model_id: str) -> dict:
842856
"""
843857
This endpoint deletes the specified model, along with all

nucleus/constants.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,4 @@
4242
BOX_TYPE = "box"
4343
POLYGON_TYPE = "polygon"
4444
GEOMETRY_KEY = "geometry"
45+
AUTOTAGS_KEY = "autotags"

nucleus/dataset.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,9 @@ def delete_item(self, item_id: str = None, reference_id: str = None):
221221
self.id, reference_id=reference_id, item_id=item_id
222222
)
223223

224+
def list_autotags(self):
225+
return self._client.list_autotags(self.id)
226+
224227
def _format_dataset_item_response(self, response: dict) -> dict:
225228
item = response.get(ITEM_KEY, None)
226229
annotation_payload = response.get(ANNOTATIONS_KEY, [])

nucleus/slice.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
from typing import List, Dict, Any
2-
from .constants import DATASET_ITEM_ID_KEY, REFERENCE_IDS_KEY
2+
from .constants import (
3+
DATASET_ITEM_ID_KEY,
4+
REFERENCE_IDS_KEY,
5+
DATASET_ITEM_IDS_KEY,
6+
)
37

48

59
class Slice:
@@ -29,9 +33,9 @@ def info(self, id_type: str = DATASET_ITEM_ID_KEY) -> dict:
2933
return self._client.slice_info(self.slice_id, id_type)
3034

3135
def append(
32-
self,
36+
self,
3337
dataset_item_ids: List[str] = None,
34-
reference_ids: List[str] = None
38+
reference_ids: List[str] = None,
3539
) -> dict:
3640
"""
3741
Appends to a slice from items already present in a dataset.
@@ -61,4 +65,4 @@ def append(
6165
response = self._client._make_request(
6266
payload, f"slice/{self.slice_id}/append"
6367
)
64-
return response
68+
return response

tests/test_dataset.py

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1-
import pytest
2-
31
from pathlib import Path
4-
2+
import pytest
53
from nucleus import Dataset, DatasetItem, UploadResponse
64
from nucleus.constants import (
75
NEW_ITEMS,
@@ -12,15 +10,14 @@
1210
DATASET_ID_KEY,
1311
)
1412

15-
1613
TEST_DATASET_NAME = '[PyTest] Test Dataset'
1714
TEST_SLICE_NAME = '[PyTest] Test Slice'
1815
TEST_IMG_URLS = [
19-
's3://scaleapi-attachments/BDD/BDD/bdd100k/images/100k/train/6dd63871-831611a6.jpg',
20-
's3://scaleapi-attachments/BDD/BDD/bdd100k/images/100k/train/82c1005c-e2d1d94f.jpg',
21-
's3://scaleapi-attachments/BDD/BDD/bdd100k/images/100k/train/7f2e1814-6591087d.jpg',
22-
's3://scaleapi-attachments/BDD/BDD/bdd100k/images/100k/train/06924f46-1708b96f.jpg',
23-
's3://scaleapi-attachments/BDD/BDD/bdd100k/images/100k/train/89b42832-10d662f4.jpg',
16+
"s3://scaleapi-attachments/BDD/BDD/bdd100k/images/100k/train/6dd63871-831611a6.jpg",
17+
"s3://scaleapi-attachments/BDD/BDD/bdd100k/images/100k/train/82c1005c-e2d1d94f.jpg",
18+
"s3://scaleapi-attachments/BDD/BDD/bdd100k/images/100k/train/7f2e1814-6591087d.jpg",
19+
"s3://scaleapi-attachments/BDD/BDD/bdd100k/images/100k/train/06924f46-1708b96f.jpg",
20+
"s3://scaleapi-attachments/BDD/BDD/bdd100k/images/100k/train/89b42832-10d662f4.jpg",
2421
]
2522

2623
@pytest.fixture()
@@ -66,25 +63,33 @@ def check_is_expected_response(response):
6663
# With reference ids and metadata:
6764
ds_items_with_metadata = []
6865
for i, url in enumerate(TEST_IMG_URLS):
69-
ds_items_with_metadata.append(DatasetItem(
70-
image_location=url,
71-
reference_id=Path(url).name,
72-
metadata={
73-
'made_with_pytest': True,
74-
'example_int': i,
75-
'example_str': 'hello',
76-
'example_float': 0.5,
77-
'example_dict': {
78-
'nested': True,
66+
ds_items_with_metadata.append(
67+
DatasetItem(
68+
image_location=url,
69+
reference_id=Path(url).name,
70+
metadata={
71+
"made_with_pytest": True,
72+
"example_int": i,
73+
"example_str": "hello",
74+
"example_float": 0.5,
75+
"example_dict": {
76+
"nested": True,
77+
},
78+
"example_list": ["hello", i, False],
7979
},
80-
'example_list': ['hello', i, False],
81-
}
82-
))
80+
)
81+
)
8382

8483
response = dataset.append(ds_items_with_metadata)
8584
check_is_expected_response(response)
8685

8786

87+
def test_dataset_list_autotags(CLIENT, dataset):
88+
# Creation
89+
# List of Autotags should be empty
90+
autotag_response = CLIENT.list_autotags(dataset.id)
91+
assert autotag_response == []
92+
8893
def test_slice_create_and_delete(dataset):
8994
# Dataset upload
9095
ds_items = []

0 commit comments

Comments
 (0)