Skip to content

Commit 50b1116

Browse files
author
Diego Ardila
committed
local upload passes
1 parent f649c94 commit 50b1116

File tree

2 files changed

+31
-18
lines changed

2 files changed

+31
-18
lines changed

nucleus/__init__.py

Lines changed: 30 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@
6868
BoxAnnotation,
6969
PolygonAnnotation,
7070
SegmentationAnnotation,
71+
Segment,
7172
)
7273
from .constants import (
7374
ANNOTATION_METADATA_SCHEMA_KEY,
@@ -386,18 +387,18 @@ def populate_dataset(
386387
async_responses.extend(responses)
387388

388389
for response in async_responses:
389-
agg_response.update_response(response.json())
390+
agg_response.update_response(response)
390391

391392
return agg_response
392393

393394
def _process_append_requests_local(
394395
self,
395396
dataset_id: str,
396397
payload: dict,
397-
update: bool,
398+
update: bool, # TODO: understand how to pass this in.
398399
local_batch_size: int = 10,
399400
):
400-
def preprocess_payload(batch):
401+
def get_files(batch):
401402
request_payload = [
402403
(ITEMS_KEY, (None, json.dumps(batch), "application/json"))
403404
]
@@ -416,20 +417,19 @@ def preprocess_payload(batch):
416417

417418
items = payload[ITEMS_KEY]
418419
responses: List[Any] = []
419-
request_payloads = []
420+
files_per_request = []
420421
payload_items = []
421422
for i in range(0, len(items), local_batch_size):
422423
batch = items[i : i + local_batch_size]
423-
batch_payload = preprocess_payload(batch)
424-
request_payloads.append(batch_payload)
424+
files_per_request.append(get_files(batch))
425425
payload_items.append(batch)
426426

427427
responses = [
428-
self.make_request(
429-
payload,
430-
f"dataset/{dataset_id}/append",
428+
self._make_files_request(
429+
files=files,
430+
route=f"dataset/{dataset_id}/append",
431431
)
432-
for payload in request_payloads
432+
for files in files_per_request
433433
]
434434

435435
def close_files(request_items):
@@ -439,7 +439,7 @@ def close_files(request_items):
439439
item[1][1].close()
440440

441441
# don't forget to close all open files
442-
for p in request_payloads:
442+
for p in files_per_request:
443443
close_files(p)
444444

445445
return responses
@@ -1013,8 +1013,8 @@ def delete_custom_index(self, dataset_id: str):
10131013
requests_command=requests.delete,
10141014
)
10151015

1016-
def _make_request_raw(
1017-
self, payload: dict, endpoint: str, requests_command=requests.post
1016+
def _make_files_request(
1017+
self, files, route: str, requests_command=requests.post
10181018
):
10191019
"""
10201020
Makes a request to Nucleus endpoint. This method returns the raw
@@ -1025,18 +1025,22 @@ def _make_request_raw(
10251025
:param requests_command: requests.post, requests.get, requests.delete
10261026
:return: response
10271027
"""
1028+
endpoint = f"{self.endpoint}/{route}"
1029+
10281030
logger.info("Posting to %s", endpoint)
10291031

10301032
response = requests_command(
10311033
endpoint,
1032-
json=payload,
1033-
headers={"Content-Type": "application/json"},
1034+
files=files,
10341035
auth=(self.api_key, ""),
10351036
timeout=DEFAULT_NETWORK_TIMEOUT_SEC,
10361037
)
10371038
logger.info("API request has response code %s", response.status_code)
10381039

1039-
return response
1040+
if not response.ok:
1041+
self.handle_bad_response(endpoint, requests_command, response)
1042+
1043+
return response.json()
10401044

10411045
def make_request(
10421046
self, payload: dict, route: str, requests_command=requests.post
@@ -1052,7 +1056,16 @@ def make_request(
10521056
"""
10531057
endpoint = f"{self.endpoint}/{route}"
10541058

1055-
response = self._make_request_raw(payload, endpoint, requests_command)
1059+
logger.info("Posting to %s", endpoint)
1060+
1061+
response = requests_command(
1062+
endpoint,
1063+
json=payload,
1064+
headers={"Content-Type": "application/json"},
1065+
auth=(self.api_key, ""),
1066+
timeout=DEFAULT_NETWORK_TIMEOUT_SEC,
1067+
)
1068+
logger.info("API request has response code %s", response.status_code)
10561069

10571070
if not response.ok:
10581071
self.handle_bad_response(endpoint, requests_command, response)

nucleus/dataset.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ def append(
225225
return self._client.populate_dataset(
226226
self.id,
227227
dataset_items,
228-
force=update,
228+
update=update,
229229
batch_size=batch_size,
230230
)
231231

0 commit comments

Comments
 (0)