Skip to content

Commit 9ae8039

Browse files
SK-2142 return None on empty error response
1 parent e63345e commit 9ae8039

8 files changed

Lines changed: 24 additions & 31 deletions

File tree

skyflow/utils/_utils.py

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,6 @@ def get_metrics():
211211
}
212212
return details_dic
213213

214-
215214
def parse_insert_response(api_response, continue_on_error):
216215
# Retrieve the headers and data from the API response
217216
api_response_headers = api_response.headers
@@ -244,8 +243,7 @@ def parse_insert_response(api_response, continue_on_error):
244243
errors.append(error)
245244

246245
insert_response.inserted_fields = inserted_fields
247-
insert_response.errors = errors
248-
246+
insert_response.errors = errors if len(errors) > 0 else None
249247
else:
250248
for record in api_response_data.records:
251249
field_data = {
@@ -257,6 +255,7 @@ def parse_insert_response(api_response, continue_on_error):
257255

258256
inserted_fields.append(field_data)
259257
insert_response.inserted_fields = inserted_fields
258+
insert_response.errors = None
260259

261260
return insert_response
262261

@@ -275,21 +274,17 @@ def parse_delete_response(api_response: V1BulkDeleteRecordResponse):
275274
delete_response = DeleteResponse()
276275
deleted_ids = api_response.record_id_response
277276
delete_response.deleted_ids = deleted_ids
278-
delete_response.errors = []
277+
delete_response.errors = None
279278
return delete_response
280279

281-
282280
def parse_get_response(api_response: V1BulkGetRecordResponse):
283281
get_response = GetResponse()
284282
data = []
285-
errors = []
286283
for record in api_response.records:
287284
field_data = {field: value for field, value in record.fields.items()}
288285
data.append(field_data)
289286

290287
get_response.data = data
291-
get_response.errors = errors
292-
293288
return get_response
294289

295290
def parse_detokenize_response(api_response: HttpResponse[V1DetokenizeResponse]):
@@ -320,7 +315,7 @@ def parse_detokenize_response(api_response: HttpResponse[V1DetokenizeResponse]):
320315
errors = errors
321316
detokenize_response = DetokenizeResponse()
322317
detokenize_response.detokenized_fields = detokenized_fields
323-
detokenize_response.errors = errors
318+
detokenize_response.errors = errors if len(errors) > 0 else None
324319

325320
return detokenize_response
326321

skyflow/vault/controller/_detect.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ def output_to_dict_list(output):
137137
entities=entities,
138138
run_id=run_id_val,
139139
status=status_val,
140-
errors=[]
140+
errors=None
141141
)
142142

143143
def __get_token_format(self, request):

skyflow/vault/data/_insert_response.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
class InsertResponse:
22
def __init__(self, inserted_fields = None, errors=None):
3-
if errors is None:
4-
errors = list()
53
self.inserted_fields = inserted_fields
64
self.errors = errors
75

skyflow/vault/data/_query_response.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
class QueryResponse:
22
def __init__(self):
33
self.fields = []
4-
self.errors = []
4+
self.errors = None
55

66
def __repr__(self):
77
return f"QueryResponse(fields={self.fields}, errors={self.errors})"

skyflow/vault/data/_update_response.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
class UpdateResponse:
22
def __init__(self, updated_field = None, errors=None):
33
self.updated_field = updated_field
4-
self.errors = errors if errors is not None else []
4+
self.errors = errors
55

66
def __repr__(self):
77
return f"UpdateResponse(updated_field={self.updated_field}, errors={self.errors})"

skyflow/vault/detect/_deidentify_file_response.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def __init__(
1313
entities: list = None, # list of dicts with keys 'file' and 'extension'
1414
run_id: str = None,
1515
status: str = None,
16-
errors: list = [],
16+
errors: list = None,
1717
):
1818
self.file = file
1919
self.type = type

tests/vault/controller/test__detect.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ def test_deidentify_file_txt_success(self, mock_open, mock_basename, mock_base64
153153
word_count=1, char_count=1, size_in_kb=1,
154154
duration_in_seconds=None, page_count=None,
155155
slide_count=None, entities=[], run_id="runid123",
156-
status="SUCCESS", errors=[])) as mock_parse:
156+
status="SUCCESS", errors=None)) as mock_parse:
157157
result = self.detect.deidentify_file(req)
158158
mock_validate.assert_called_once()
159159
files_api.deidentify_text.assert_called_once()
@@ -196,7 +196,7 @@ def test_deidentify_file_audio_success(self, mock_base64, mock_validate):
196196
word_count=1, char_count=1, size_in_kb=1,
197197
duration_in_seconds=1, page_count=None,
198198
slide_count=None, entities=[], run_id="runid456",
199-
status="SUCCESS", errors=[])) as mock_parse:
199+
status="SUCCESS", errors=None)) as mock_parse:
200200
result = self.detect.deidentify_file(req)
201201
mock_validate.assert_called_once()
202202
files_api.deidentify_audio.assert_called_once()
@@ -238,7 +238,7 @@ def test_get_detect_run_success(self, mock_validate):
238238
char_count=1, size_in_kb=1, duration_in_seconds=None,
239239
page_count=None, slide_count=None, entities=[],
240240
run_id="runid789", status="SUCCESS",
241-
errors=[])) as mock_parse:
241+
errors=None)) as mock_parse:
242242
result = self.detect.get_detect_run(req)
243243
mock_validate.assert_called_once()
244244
files_api.get_run.assert_called_once()
@@ -289,7 +289,7 @@ def test_deidentify_file_all_branches(self, mock_poll, mock_open, mock_basename,
289289
file="dGVzdCBjb250ZW50", type="pdf", extension="pdf",
290290
word_count=1, char_count=1, size_in_kb=1,
291291
duration_in_seconds=1, page_count=1, slide_count=1,
292-
entities=[], run_id="runid123", status="SUCCESS", errors=[]
292+
entities=[], run_id="runid123", status="SUCCESS", errors=None
293293
)) as mock_parse:
294294
# Test configuration for different file types
295295
test_cases = [

tests/vault/controller/test__vault.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ def test_insert_with_continue_on_error_false(self, mock_parse_response, mock_val
123123

124124
# Assert that the result matches the expected InsertResponse
125125
self.assertEqual(result.inserted_fields, expected_inserted_fields)
126-
self.assertEqual(result.errors, []) # No errors expected
126+
self.assertEqual(result.errors, None) # No errors expected
127127

128128
@patch("skyflow.vault.controller._vault.validate_insert_request")
129129
def test_insert_handles_generic_error(self, mock_validate):
@@ -181,7 +181,7 @@ def test_insert_with_continue_on_error_false_when_tokens_are_not_none(self, mock
181181

182182
# Assert that the result matches the expected InsertResponse
183183
self.assertEqual(result.inserted_fields, expected_inserted_fields)
184-
self.assertEqual(result.errors, []) # No errors expected
184+
self.assertEqual(result.errors, None) # No errors expected
185185

186186
@patch("skyflow.vault.controller._vault.validate_update_request")
187187
@patch("skyflow.vault.controller._vault.parse_update_record_response")
@@ -223,7 +223,7 @@ def test_update_successful(self, mock_parse_response, mock_validate):
223223

224224
# Check that the result matches the expected UpdateResponse
225225
self.assertEqual(result.updated_field, expected_updated_field)
226-
self.assertEqual(result.errors, []) # No errors expected
226+
self.assertEqual(result.errors, None) # No errors expected
227227

228228
@patch("skyflow.vault.controller._vault.validate_update_request")
229229
def test_update_handles_generic_error(self, mock_validate):
@@ -257,7 +257,7 @@ def test_delete_successful(self, mock_parse_response, mock_validate):
257257

258258
# Expected parsed response
259259
expected_deleted_ids = ["12345", "67890"]
260-
expected_response = DeleteResponse(deleted_ids=expected_deleted_ids, errors=[])
260+
expected_response = DeleteResponse(deleted_ids=expected_deleted_ids, errors=None)
261261

262262
# Set the return value for the parse response
263263
mock_parse_response.return_value = expected_response
@@ -273,7 +273,7 @@ def test_delete_successful(self, mock_parse_response, mock_validate):
273273

274274
# Check that the result matches the expected DeleteResponse
275275
self.assertEqual(result.deleted_ids, expected_deleted_ids)
276-
self.assertEqual(result.errors, []) # No errors expected
276+
self.assertEqual(result.errors, None) # No errors expected
277277

278278
@patch("skyflow.vault.controller._vault.validate_delete_request")
279279
def test_delete_handles_generic_exception(self, mock_validate):
@@ -330,7 +330,7 @@ def test_get_successful(self, mock_parse_response, mock_validate):
330330
{"field1": "value1", "field2": "value2"},
331331
{"field1": "value3", "field2": "value4"}
332332
]
333-
expected_response = GetResponse(data=expected_data, errors=[])
333+
expected_response = GetResponse(data=expected_data, errors=None)
334334

335335
# Set the return value for parse_get_response
336336
mock_parse_response.return_value = expected_response
@@ -346,7 +346,7 @@ def test_get_successful(self, mock_parse_response, mock_validate):
346346

347347
# Check that the result matches the expected GetResponse
348348
self.assertEqual(result.data, expected_data)
349-
self.assertEqual(result.errors, []) # No errors expected
349+
self.assertEqual(result.errors, None) # No errors expected
350350

351351
@patch("skyflow.vault.controller._vault.validate_get_request")
352352
@patch("skyflow.vault.controller._vault.parse_get_response")
@@ -381,7 +381,7 @@ def test_get_successful_with_column_values(self, mock_parse_response, mock_valid
381381
{"field1": "value1", "field2": "value2"},
382382
{"field1": "value3", "field2": "value4"}
383383
]
384-
expected_response = GetResponse(data=expected_data, errors=[])
384+
expected_response = GetResponse(data=expected_data, errors=None)
385385

386386
# Set the return value for parse_get_response
387387
mock_parse_response.return_value = expected_response
@@ -397,7 +397,7 @@ def test_get_successful_with_column_values(self, mock_parse_response, mock_valid
397397

398398
# Check that the result matches the expected GetResponse
399399
self.assertEqual(result.data, expected_data)
400-
self.assertEqual(result.errors, []) # No errors expected
400+
self.assertEqual(result.errors, None) # No errors expected
401401

402402
@patch("skyflow.vault.controller._vault.validate_get_request")
403403
def test_get_handles_generic_error(self, mock_validate):
@@ -446,7 +446,7 @@ def test_query_successful(self, mock_parse_response, mock_validate):
446446

447447
# Check that the result matches the expected QueryResponse
448448
self.assertEqual(result.fields, expected_fields)
449-
self.assertEqual(result.errors, []) # No errors expected
449+
self.assertEqual(result.errors, None) # No errors expected
450450

451451
@patch("skyflow.vault.controller._vault.validate_query_request")
452452
def test_query_handles_generic_error(self, mock_validate):
@@ -495,7 +495,7 @@ def test_detokenize_successful(self, mock_parse_response, mock_validate):
495495
{"token": "token1", "value": "value1", "type": "STRING"},
496496
{"token": "token2", "value": "value2", "type": "STRING"}
497497
]
498-
expected_response = DetokenizeResponse(detokenized_fields=expected_fields, errors=[])
498+
expected_response = DetokenizeResponse(detokenized_fields=expected_fields, errors=None)
499499

500500
# Set the return value for parse_detokenize_response
501501
mock_parse_response.return_value = expected_response
@@ -511,7 +511,7 @@ def test_detokenize_successful(self, mock_parse_response, mock_validate):
511511

512512
# Check that the result matches the expected DetokenizeResponse
513513
self.assertEqual(result.detokenized_fields, expected_fields)
514-
self.assertEqual(result.errors, []) # No errors expected
514+
self.assertEqual(result.errors, None) # No errors expected
515515

516516
@patch("skyflow.vault.controller._vault.validate_detokenize_request")
517517
def test_detokenize_handles_generic_error(self, mock_validate):

0 commit comments

Comments
 (0)