Skip to content

Commit a7ce43b

Browse files
authored
Merge branch 'master' into sasha/list_autotags
2 parents eb25861 + f45727c commit a7ce43b

File tree

4 files changed

+78
-7
lines changed

4 files changed

+78
-7
lines changed

nucleus/__init__.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -852,6 +852,24 @@ def list_autotags(self, dataset_id: str) -> List[str]:
852852
)
853853
return response[AUTOTAGS_KEY] if AUTOTAGS_KEY in response else response
854854

855+
def delete_model(self, model_id: str) -> dict:
856+
"""
857+
This endpoint deletes the specified model, along with all
858+
associated model_runs.
859+
860+
:param
861+
model_id: id of the model_run to delete.
862+
863+
:return:
864+
{}
865+
"""
866+
response = self._make_request(
867+
{},
868+
f"model/{model_id}",
869+
requests_command=requests.delete,
870+
)
871+
return response
872+
855873
def _make_grequest(
856874
self,
857875
payload: dict,

nucleus/dataset.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ def create_slice(
203203
"""
204204
if dataset_item_ids and reference_ids:
205205
raise Exception(
206-
"You cannot both dataset_item_ids and reference_ids"
206+
"You cannot specify both dataset_item_ids and reference_ids"
207207
)
208208
payload: Dict[str, Any] = {NAME_KEY: name}
209209
if dataset_item_ids:

nucleus/slice.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def info(self, id_type: str = DATASET_ITEM_ID_KEY) -> dict:
2727
{
2828
"name": str,
2929
"dataset_id": str,
30-
"dataset_item_ids": List[str],
30+
"dataset_item_ids" or "reference_ids": List[str],
3131
}
3232
"""
3333
return self._client.slice_info(self.slice_id, id_type)

tests/test_dataset.py

Lines changed: 58 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
DATASET_ID_KEY,
1111
)
1212

13-
14-
TEST_DATASET_NAME = "[PyTest] Test Dataset"
13+
TEST_DATASET_NAME = '[PyTest] Test Dataset'
14+
TEST_SLICE_NAME = '[PyTest] Test Slice'
1515
TEST_IMG_URLS = [
1616
"s3://scaleapi-attachments/BDD/BDD/bdd100k/images/100k/train/6dd63871-831611a6.jpg",
1717
"s3://scaleapi-attachments/BDD/BDD/bdd100k/images/100k/train/82c1005c-e2d1d94f.jpg",
@@ -20,15 +20,13 @@
2020
"s3://scaleapi-attachments/BDD/BDD/bdd100k/images/100k/train/89b42832-10d662f4.jpg",
2121
]
2222

23-
24-
@pytest.fixture(scope="module")
23+
@pytest.fixture()
2524
def dataset(CLIENT):
2625
ds = CLIENT.create_dataset(TEST_DATASET_NAME)
2726
yield ds
2827

2928
CLIENT.delete_dataset(ds.id)
3029

31-
3230
def test_dataset_create_and_delete(CLIENT):
3331
# Creation
3432
ds = CLIENT.create_dataset(TEST_DATASET_NAME)
@@ -91,3 +89,58 @@ def test_dataset_list_autotags(CLIENT, dataset):
9189
# List of Autotags should be empty
9290
autotag_response = CLIENT.list_autotags(dataset.id)
9391
assert autotag_response == []
92+
93+
def test_slice_create_and_delete(dataset):
94+
# Dataset upload
95+
ds_items = []
96+
for url in TEST_IMG_URLS:
97+
ds_items.append(DatasetItem(
98+
image_location=url,
99+
reference_id=Path(url).name,
100+
))
101+
response = dataset.append(ds_items)
102+
assert ERROR_PAYLOAD not in response.json()
103+
104+
# Slice creation
105+
slc = dataset.create_slice(
106+
name=TEST_SLICE_NAME,
107+
reference_ids=[item.reference_id for item in ds_items[:2]],
108+
)
109+
110+
dataset_slices = dataset.slices
111+
assert len(dataset_slices) == 1
112+
assert slc.slice_id == dataset_slices[0]
113+
114+
response = slc.info(id_type="reference_id")
115+
assert response["name"] == TEST_SLICE_NAME
116+
assert response["dataset_id"] == dataset.id
117+
assert len(response["reference_ids"]) == 2
118+
for item in ds_items[:2]:
119+
assert item.reference_id in response["reference_ids"]
120+
print(response)
121+
122+
123+
def test_slice_append(dataset):
124+
# Dataset upload
125+
ds_items = []
126+
for url in TEST_IMG_URLS:
127+
ds_items.append(DatasetItem(
128+
image_location=url,
129+
reference_id=Path(url).name,
130+
))
131+
response = dataset.append(ds_items)
132+
assert ERROR_PAYLOAD not in response.json()
133+
134+
# Slice creation
135+
slc = dataset.create_slice(
136+
name=TEST_SLICE_NAME,
137+
reference_ids=[ds_items[0].reference_id],
138+
)
139+
140+
# Insert duplicate first item
141+
slc.append(reference_ids=[item.reference_id for item in ds_items[:3]])
142+
143+
response = slc.info(id_type="reference_ids")
144+
assert len(response["reference_ids"]) == 3
145+
for item in ds_items[:3]:
146+
assert item.reference_id in response["reference_ids"]

0 commit comments

Comments
 (0)