68
68
BoxAnnotation ,
69
69
PolygonAnnotation ,
70
70
SegmentationAnnotation ,
71
+ Segment ,
71
72
)
72
73
from .constants import (
73
74
ANNOTATION_METADATA_SCHEMA_KEY ,
@@ -386,18 +387,18 @@ def populate_dataset(
386
387
async_responses .extend (responses )
387
388
388
389
for response in async_responses :
389
- agg_response .update_response (response . json () )
390
+ agg_response .update_response (response )
390
391
391
392
return agg_response
392
393
393
394
def _process_append_requests_local (
394
395
self ,
395
396
dataset_id : str ,
396
397
payload : dict ,
397
- update : bool ,
398
+ update : bool , # TODO: understand how to pass this in.
398
399
local_batch_size : int = 10 ,
399
400
):
400
- def preprocess_payload (batch ):
401
+ def get_files (batch ):
401
402
request_payload = [
402
403
(ITEMS_KEY , (None , json .dumps (batch ), "application/json" ))
403
404
]
@@ -416,20 +417,19 @@ def preprocess_payload(batch):
416
417
417
418
items = payload [ITEMS_KEY ]
418
419
responses : List [Any ] = []
419
- request_payloads = []
420
+ files_per_request = []
420
421
payload_items = []
421
422
for i in range (0 , len (items ), local_batch_size ):
422
423
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 ))
425
425
payload_items .append (batch )
426
426
427
427
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" ,
431
431
)
432
- for payload in request_payloads
432
+ for files in files_per_request
433
433
]
434
434
435
435
def close_files (request_items ):
@@ -439,7 +439,7 @@ def close_files(request_items):
439
439
item [1 ][1 ].close ()
440
440
441
441
# don't forget to close all open files
442
- for p in request_payloads :
442
+ for p in files_per_request :
443
443
close_files (p )
444
444
445
445
return responses
@@ -1013,8 +1013,8 @@ def delete_custom_index(self, dataset_id: str):
1013
1013
requests_command = requests .delete ,
1014
1014
)
1015
1015
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
1018
1018
):
1019
1019
"""
1020
1020
Makes a request to Nucleus endpoint. This method returns the raw
@@ -1025,18 +1025,22 @@ def _make_request_raw(
1025
1025
:param requests_command: requests.post, requests.get, requests.delete
1026
1026
:return: response
1027
1027
"""
1028
+ endpoint = f"{ self .endpoint } /{ route } "
1029
+
1028
1030
logger .info ("Posting to %s" , endpoint )
1029
1031
1030
1032
response = requests_command (
1031
1033
endpoint ,
1032
- json = payload ,
1033
- headers = {"Content-Type" : "application/json" },
1034
+ files = files ,
1034
1035
auth = (self .api_key , "" ),
1035
1036
timeout = DEFAULT_NETWORK_TIMEOUT_SEC ,
1036
1037
)
1037
1038
logger .info ("API request has response code %s" , response .status_code )
1038
1039
1039
- return response
1040
+ if not response .ok :
1041
+ self .handle_bad_response (endpoint , requests_command , response )
1042
+
1043
+ return response .json ()
1040
1044
1041
1045
def make_request (
1042
1046
self , payload : dict , route : str , requests_command = requests .post
@@ -1052,7 +1056,16 @@ def make_request(
1052
1056
"""
1053
1057
endpoint = f"{ self .endpoint } /{ route } "
1054
1058
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 )
1056
1069
1057
1070
if not response .ok :
1058
1071
self .handle_bad_response (endpoint , requests_command , response )
0 commit comments