Skip to content

Commit a4b734a

Browse files
internal: more careful crud response process
In most cases, crud API response process assumes that there are always two response values, which is rather uncommon. The reason of that is internal crud wrappers [1]. This patch reworks response process a bit to more carefully process this unusual case and to not confuse developers. 1. https://github.com/tarantool/crud/blob/53457477974fed42351cbd87f566d11e9f7e39bb/crud/common/schema.lua#L88
1 parent 66e53bc commit a4b734a

File tree

1 file changed

+23
-28
lines changed

1 file changed

+23
-28
lines changed

tarantool/connection.py

+23-28
Original file line numberDiff line numberDiff line change
@@ -2158,7 +2158,7 @@ def crud_insert(self, space_name: str, values: Union[tuple, list],
21582158

21592159
crud_resp = call_crud(self, "crud.insert", space_name, values, opts)
21602160

2161-
if crud_resp[1] is not None:
2161+
if len(crud_resp) > 1 and crud_resp[1] is not None:
21622162
raise CrudModuleError(None, CrudError(crud_resp[1]))
21632163

21642164
return CrudResult(crud_resp[0])
@@ -2192,7 +2192,7 @@ def crud_insert_object(self, space_name: str, values: dict,
21922192

21932193
crud_resp = call_crud(self, "crud.insert_object", space_name, values, opts)
21942194

2195-
if crud_resp[1] is not None:
2195+
if len(crud_resp) > 1 and crud_resp[1] is not None:
21962196
raise CrudModuleError(None, CrudError(crud_resp[1]))
21972197

21982198
return CrudResult(crud_resp[0])
@@ -2230,7 +2230,7 @@ def crud_insert_many(self, space_name: str, values: Union[tuple, list],
22302230
if crud_resp[0] is not None:
22312231
res = CrudResult(crud_resp[0])
22322232

2233-
if crud_resp[1] is not None:
2233+
if len(crud_resp) > 1 and crud_resp[1] is not None:
22342234
errs = []
22352235
for err in crud_resp[1]:
22362236
errs.append(CrudError(err))
@@ -2271,7 +2271,7 @@ def crud_insert_object_many(self, space_name: str, values: Union[tuple, list],
22712271
if crud_resp[0] is not None:
22722272
res = CrudResult(crud_resp[0])
22732273

2274-
if crud_resp[1] is not None:
2274+
if len(crud_resp) > 1 and crud_resp[1] is not None:
22752275
errs = []
22762276
for err in crud_resp[1]:
22772277
errs.append(CrudError(err))
@@ -2306,7 +2306,7 @@ def crud_get(self, space_name: str, key: int, opts: Optional[dict] = None) -> Cr
23062306

23072307
crud_resp = call_crud(self, "crud.get", space_name, key, opts)
23082308

2309-
if crud_resp[1] is not None:
2309+
if len(crud_resp) > 1 and crud_resp[1] is not None:
23102310
raise CrudModuleError(None, CrudError(crud_resp[1]))
23112311

23122312
return CrudResult(crud_resp[0])
@@ -2345,7 +2345,7 @@ def crud_update(self, space_name: str, key: int, operations: Optional[list] = No
23452345

23462346
crud_resp = call_crud(self, "crud.update", space_name, key, operations, opts)
23472347

2348-
if crud_resp[1] is not None:
2348+
if len(crud_resp) > 1 and crud_resp[1] is not None:
23492349
raise CrudModuleError(None, CrudError(crud_resp[1]))
23502350

23512351
return CrudResult(crud_resp[0])
@@ -2377,7 +2377,7 @@ def crud_delete(self, space_name: str, key: int, opts: Optional[dict] = None) ->
23772377

23782378
crud_resp = call_crud(self, "crud.delete", space_name, key, opts)
23792379

2380-
if crud_resp[1] is not None:
2380+
if len(crud_resp) > 1 and crud_resp[1] is not None:
23812381
raise CrudModuleError(None, CrudError(crud_resp[1]))
23822382

23832383
return CrudResult(crud_resp[0])
@@ -2411,7 +2411,7 @@ def crud_replace(self, space_name: str, values: Union[tuple, list],
24112411

24122412
crud_resp = call_crud(self, "crud.replace", space_name, values, opts)
24132413

2414-
if crud_resp[1] is not None:
2414+
if len(crud_resp) > 1 and crud_resp[1] is not None:
24152415
raise CrudModuleError(None, CrudError(crud_resp[1]))
24162416

24172417
return CrudResult(crud_resp[0])
@@ -2445,7 +2445,7 @@ def crud_replace_object(self, space_name: str, values: dict,
24452445

24462446
crud_resp = call_crud(self, "crud.replace_object", space_name, values, opts)
24472447

2448-
if crud_resp[1] is not None:
2448+
if len(crud_resp) > 1 and crud_resp[1] is not None:
24492449
raise CrudModuleError(None, CrudError(crud_resp[1]))
24502450

24512451
return CrudResult(crud_resp[0])
@@ -2483,7 +2483,7 @@ def crud_replace_many(self, space_name: str, values: Union[tuple, list],
24832483
if crud_resp[0] is not None:
24842484
res = CrudResult(crud_resp[0])
24852485

2486-
if crud_resp[1] is not None:
2486+
if len(crud_resp) > 1 and crud_resp[1] is not None:
24872487
errs = []
24882488
for err in crud_resp[1]:
24892489
errs.append(CrudError(err))
@@ -2524,7 +2524,7 @@ def crud_replace_object_many(self, space_name: str, values: Union[tuple, list],
25242524
if crud_resp[0] is not None:
25252525
res = CrudResult(crud_resp[0])
25262526

2527-
if crud_resp[1] is not None:
2527+
if len(crud_resp) > 1 and crud_resp[1] is not None:
25282528
errs = []
25292529
for err in crud_resp[1]:
25302530
errs.append(CrudError(err))
@@ -2567,7 +2567,7 @@ def crud_upsert(self, space_name: str, values: Union[tuple, list],
25672567

25682568
crud_resp = call_crud(self, "crud.upsert", space_name, values, operations, opts)
25692569

2570-
if crud_resp[1] is not None:
2570+
if len(crud_resp) > 1 and crud_resp[1] is not None:
25712571
raise CrudModuleError(None, CrudError(crud_resp[1]))
25722572

25732573
return CrudResult(crud_resp[0])
@@ -2608,7 +2608,7 @@ def crud_upsert_object(self, space_name: str, values: dict,
26082608

26092609
crud_resp = call_crud(self, "crud.upsert_object", space_name, values, operations, opts)
26102610

2611-
if crud_resp[1] is not None:
2611+
if len(crud_resp) > 1 and crud_resp[1] is not None:
26122612
raise CrudModuleError(None, CrudError(crud_resp[1]))
26132613

26142614
return CrudResult(crud_resp[0])
@@ -2646,7 +2646,7 @@ def crud_upsert_many(self, space_name: str, values_operation: Union[tuple, list]
26462646
if crud_resp[0] is not None:
26472647
res = CrudResult(crud_resp[0])
26482648

2649-
if crud_resp[1] is not None:
2649+
if len(crud_resp) > 1 and crud_resp[1] is not None:
26502650
errs = []
26512651
for err in crud_resp[1]:
26522652
errs.append(CrudError(err))
@@ -2687,7 +2687,7 @@ def crud_upsert_object_many(self, space_name: str, values_operation: Union[tuple
26872687
if crud_resp[0] is not None:
26882688
res = CrudResult(crud_resp[0])
26892689

2690-
if crud_resp[1] is not None:
2690+
if len(crud_resp) > 1 and crud_resp[1] is not None:
26912691
errs = []
26922692
for err in crud_resp[1]:
26932693
errs.append(CrudError(err))
@@ -2726,7 +2726,7 @@ def crud_select(self, space_name: str, conditions: Optional[list] = None,
27262726

27272727
crud_resp = call_crud(self, "crud.select", space_name, conditions, opts)
27282728

2729-
if crud_resp[1] is not None:
2729+
if len(crud_resp) > 1 and crud_resp[1] is not None:
27302730
raise CrudModuleError(None, CrudError(crud_resp[1]))
27312731

27322732
return CrudResult(crud_resp[0])
@@ -2758,7 +2758,7 @@ def crud_min(self, space_name: str, index_name: str, opts: Optional[dict] = None
27582758

27592759
crud_resp = call_crud(self, "crud.min", space_name, index_name, opts)
27602760

2761-
if crud_resp[1] is not None:
2761+
if len(crud_resp) > 1 and crud_resp[1] is not None:
27622762
raise CrudModuleError(None, CrudError(crud_resp[1]))
27632763

27642764
return CrudResult(crud_resp[0])
@@ -2790,7 +2790,7 @@ def crud_max(self, space_name: str, index_name: str, opts: Optional[dict] = None
27902790

27912791
crud_resp = call_crud(self, "crud.max", space_name, index_name, opts)
27922792

2793-
if crud_resp[1] is not None:
2793+
if len(crud_resp) > 1 and crud_resp[1] is not None:
27942794
raise CrudModuleError(None, CrudError(crud_resp[1]))
27952795

27962796
return CrudResult(crud_resp[0])
@@ -2819,9 +2819,7 @@ def crud_truncate(self, space_name: str, opts: Optional[dict] = None) -> bool:
28192819

28202820
crud_resp = call_crud(self, "crud.truncate", space_name, opts)
28212821

2822-
# In absence of an error, crud does not give
2823-
# variable err as nil (as in most cases).
2824-
if len(crud_resp) != 1:
2822+
if len(crud_resp) > 1 and crud_resp[1] is not None:
28252823
raise CrudModuleError(None, CrudError(crud_resp[1]))
28262824

28272825
return crud_resp[0]
@@ -2850,9 +2848,7 @@ def crud_len(self, space_name: str, opts: Optional[dict] = None) -> int:
28502848

28512849
crud_resp = call_crud(self, "crud.len", space_name, opts)
28522850

2853-
# In absence of an error, crud does not give
2854-
# variable err as nil (as in most cases).
2855-
if len(crud_resp) != 1:
2851+
if len(crud_resp) > 1 and crud_resp[1] is not None:
28562852
raise CrudModuleError(None, CrudError(crud_resp[1]))
28572853

28582854
return crud_resp[0]
@@ -2877,9 +2873,7 @@ def crud_storage_info(self, opts: Optional[dict] = None) -> dict:
28772873

28782874
crud_resp = call_crud(self, "crud.storage_info", opts)
28792875

2880-
# In absence of an error, crud does not give
2881-
# variable err as nil (as in most cases).
2882-
if len(crud_resp) != 1:
2876+
if len(crud_resp) > 1 and crud_resp[1] is not None:
28832877
raise CrudModuleError(None, CrudError(crud_resp[1]))
28842878

28852879
return crud_resp[0]
@@ -2915,7 +2909,7 @@ def crud_count(self, space_name: str, conditions: Optional[list] = None,
29152909

29162910
crud_resp = call_crud(self, "crud.count", space_name, conditions, opts)
29172911

2918-
if crud_resp[1] is not None:
2912+
if len(crud_resp) > 1 and crud_resp[1] is not None:
29192913
raise CrudModuleError(None, CrudError(crud_resp[1]))
29202914

29212915
return crud_resp[0]
@@ -2938,6 +2932,7 @@ def crud_stats(self, space_name: str = None) -> CrudResult:
29382932

29392933
crud_resp = call_crud(self, "crud.stats", space_name)
29402934

2935+
# There are no errors in `crud.stats`.
29412936
res = None
29422937
if len(crud_resp.data[0]) > 0:
29432938
res = CrudResult(crud_resp.data[0])

0 commit comments

Comments
 (0)