@@ -35,14 +35,14 @@ def __init__(
3535 headers : Headers ,
3636 params : QueryParams ,
3737 json : Union [dict , list ],
38- max_retries : int ,
38+ max_retries : int = 0 ,
3939 ) -> None :
4040 self .session = session
4141 self .path = path
4242 self .http_method = http_method
4343 self .headers = headers
4444 self .params = params
45- self .json = None if http_method in { "GET" , "HEAD" } else json
45+ self .json = json
4646 self .max_retries = max_retries
4747 self .attempt = 1
4848
@@ -58,7 +58,6 @@ def execute(self) -> APIResponse[_ReturnT]:
5858 Raises:
5959 :class:`APIError` If the API raised an error.
6060 """
61-
6261 try :
6362 r = self .session .request (
6463 self .http_method ,
@@ -78,8 +77,8 @@ def execute(self) -> APIResponse[_ReturnT]:
7877 if "+json" not in self .headers .get ("Accept" ):
7978 return body
8079 return APIResponse [_ReturnT ].from_http_request_response (r )
81- # else:
82- # raise APIError(r.json())
80+ else :
81+ raise APIError (r .json ())
8382 except (TimeoutException , NetworkError , ReadError ) as e :
8483 if self .attempt < self .max_retries :
8584 self .attempt += 1
@@ -88,8 +87,6 @@ def execute(self) -> APIResponse[_ReturnT]:
8887 raise APIError (r .json ()) from e
8988 except JSONDecodeError :
9089 raise APIError (generate_default_error_message (r ))
91- except Exception as e :
92- raise APIError (r .json ())
9390
9491
9592class SyncSingleRequestBuilder (Generic [_ReturnT ]):
@@ -101,7 +98,7 @@ def __init__(
10198 headers : Headers ,
10299 params : QueryParams ,
103100 json : dict ,
104- max_retries : int ,
101+ max_retries : int = 0 ,
105102 ) -> None :
106103 self .session = session
107104 self .path = path
@@ -124,7 +121,6 @@ def execute(self) -> SingleAPIResponse[_ReturnT]:
124121 Raises:
125122 :class:`APIError` If the API raised an error.
126123 """
127-
128124 try :
129125 r = self .session .request (
130126 self .http_method ,
@@ -147,8 +143,6 @@ def execute(self) -> SingleAPIResponse[_ReturnT]:
147143 raise APIError (r .json ()) from e
148144 except JSONDecodeError :
149145 raise APIError (generate_default_error_message (r ))
150- except Exception as e :
151- raise APIError (r .json ())
152146
153147
154148class SyncMaybeSingleRequestBuilder (SyncSingleRequestBuilder [_ReturnT ]):
@@ -202,20 +196,13 @@ def __init__(
202196 headers : Headers ,
203197 params : QueryParams ,
204198 json : dict ,
205- max_retries : int ,
199+ max_retries : int = 0 ,
206200 ) -> None :
207201 get_origin_and_cast (BaseFilterRequestBuilder [_ReturnT ]).__init__ (
208202 self , session , headers , params
209203 )
210204 get_origin_and_cast (SyncSingleRequestBuilder [_ReturnT ]).__init__ (
211- self ,
212- session ,
213- path ,
214- http_method ,
215- headers ,
216- params ,
217- json ,
218- max_retries ,
205+ self , session , path , http_method , headers , params , json , max_retries
219206 )
220207
221208
@@ -229,7 +216,7 @@ def __init__(
229216 headers : Headers ,
230217 params : QueryParams ,
231218 json : dict ,
232- max_retries : int ,
219+ max_retries : int = 0 ,
233220 ) -> None :
234221 self .max_retries = max_retries
235222 get_origin_and_cast (BaseSelectRequestBuilder [_ReturnT ]).__init__ (
@@ -308,7 +295,7 @@ def csv(self) -> SyncSingleRequestBuilder[str]:
308295
309296
310297class SyncRequestBuilder (Generic [_ReturnT ]):
311- def __init__ (self , session : SyncClient , path : str , max_retries : int ) -> None :
298+ def __init__ (self , session : SyncClient , path : str , max_retries : int = 0 ) -> None :
312299 self .session = session
313300 self .path = path
314301 self .max_retries = max_retries
@@ -327,17 +314,17 @@ def select(
327314 Returns:
328315 :class:`SyncSelectRequestBuilder`
329316 """
330- if not (columns or count ):
331- raise ValueError ("Specify columns or count" )
317+ if count and not any (count_method == count for count_method in CountMethod ):
318+ valid_methods = ", " .join (
319+ [count_method .value for count_method in CountMethod ]
320+ )
321+ raise ValueError (
322+ f"{ count } is not a valid option. Available options are: { valid_methods } "
323+ )
324+
332325 method , params , headers , json = pre_select (* columns , count = count , head = head )
333326 return SyncSelectRequestBuilder [_ReturnT ](
334- self .session ,
335- self .path ,
336- method ,
337- headers ,
338- params ,
339- json ,
340- self .max_retries ,
327+ self .session , self .path , method , headers , params , json , self .max_retries
341328 )
342329
343330 def insert (
@@ -370,13 +357,7 @@ def insert(
370357 default_to_null = default_to_null ,
371358 )
372359 return SyncQueryRequestBuilder [_ReturnT ](
373- self .session ,
374- self .path ,
375- method ,
376- headers ,
377- params ,
378- json ,
379- self .max_retries ,
360+ self .session , self .path , method , headers , params , json , self .max_retries
380361 )
381362
382363 def upsert (
@@ -413,13 +394,7 @@ def upsert(
413394 default_to_null = default_to_null ,
414395 )
415396 return SyncQueryRequestBuilder [_ReturnT ](
416- self .session ,
417- self .path ,
418- method ,
419- headers ,
420- params ,
421- json ,
422- self .max_retries ,
397+ self .session , self .path , method , headers , params , json , self .max_retries
423398 )
424399
425400 def update (
0 commit comments