@@ -219,7 +219,12 @@ def _handle_invalid_shared_key(self):
219219 )
220220
221221 @raise_for_status
222- def get (self , path : str , params : Optional [Dict ] = None ) -> httpx .Response :
222+ def get (
223+ self ,
224+ path : str ,
225+ params : Optional [Dict ] = None ,
226+ retry_strategy : Optional [RetryStrategy ] = None ,
227+ ) -> httpx .Response :
223228 """Performs a GET-request to the Sumo API.
224229
225230 Args:
@@ -277,8 +282,9 @@ def _get():
277282 timeout = self ._timeout ,
278283 )
279284
280- retryer = self ._retry_strategy .make_retryer ()
281-
285+ retryer = (
286+ retry_strategy if retry_strategy else self ._retry_strategy
287+ ).make_retryer ()
282288 return retryer (_get )
283289
284290 @raise_for_status
@@ -288,6 +294,7 @@ def post(
288294 blob : Optional [bytes ] = None ,
289295 json : Optional [dict ] = None ,
290296 params : Optional [dict ] = None ,
297+ retry_strategy : Optional [RetryStrategy ] = None ,
291298 ) -> httpx .Response :
292299 """Performs a POST-request to the Sumo API.
293300
@@ -352,7 +359,9 @@ def _post():
352359 timeout = self ._timeout ,
353360 )
354361
355- retryer = self ._retry_strategy .make_retryer ()
362+ retryer = (
363+ retry_strategy if retry_strategy else self ._retry_strategy
364+ ).make_retryer ()
356365
357366 return retryer (_post )
358367
@@ -362,6 +371,7 @@ def put(
362371 path : str ,
363372 blob : Optional [bytes ] = None ,
364373 json : Optional [dict ] = None ,
374+ retry_strategy : Optional [RetryStrategy ] = None ,
365375 ) -> httpx .Response :
366376 """Performs a PUT-request to the Sumo API.
367377
@@ -401,13 +411,18 @@ def _put():
401411 timeout = self ._timeout ,
402412 )
403413
404- retryer = self ._retry_strategy .make_retryer ()
414+ retryer = (
415+ retry_strategy if retry_strategy else self ._retry_strategy
416+ ).make_retryer ()
405417
406418 return retryer (_put )
407419
408420 @raise_for_status
409421 def delete (
410- self , path : str , params : Optional [dict ] = None
422+ self ,
423+ path : str ,
424+ params : Optional [dict ] = None ,
425+ retry_strategy : Optional [RetryStrategy ] = None ,
411426 ) -> httpx .Response :
412427 """Performs a DELETE-request to the Sumo API.
413428
@@ -441,7 +456,9 @@ def _delete():
441456 timeout = self ._timeout ,
442457 )
443458
444- retryer = self ._retry_strategy .make_retryer ()
459+ retryer = (
460+ retry_strategy if retry_strategy else self ._retry_strategy
461+ ).make_retryer ()
445462
446463 return retryer (_delete )
447464
@@ -460,7 +477,10 @@ def _get_retry_details(self, response_in) -> Tuple[str, int]:
460477 return location , retry_after
461478
462479 def poll (
463- self , response_in : httpx .Response , timeout = None
480+ self ,
481+ response_in : httpx .Response ,
482+ timeout = None ,
483+ retry_strategy : Optional [RetryStrategy ] = None ,
464484 ) -> httpx .Response :
465485 """Poll a specific endpoint until a result is obtained.
466486
@@ -474,7 +494,7 @@ def poll(
474494 expiry = time .time () + timeout if timeout is not None else None
475495 while True :
476496 time .sleep (retry_after )
477- response = self .get (location )
497+ response = self .get (location , retry_strategy = retry_strategy )
478498 if response .status_code != 202 :
479499 return response
480500 if expiry is not None and time .time () > expiry :
@@ -539,7 +559,10 @@ def client_for_case(self, case_uuid, interactive=False):
539559
540560 @raise_for_status_async
541561 async def get_async (
542- self , path : str , params : Optional [dict ] = None
562+ self ,
563+ path : str ,
564+ params : Optional [dict ] = None ,
565+ retry_strategy : Optional [RetryStrategy ] = None ,
543566 ) -> httpx .Response :
544567 """Performs an async GET-request to the Sumo API.
545568
@@ -598,7 +621,9 @@ async def _get():
598621 timeout = self ._timeout ,
599622 )
600623
601- retryer = self ._retry_strategy .make_retryer_async ()
624+ retryer = (
625+ retry_strategy if retry_strategy else self ._retry_strategy
626+ ).make_retryer_async ()
602627
603628 return await retryer (_get )
604629
@@ -609,6 +634,7 @@ async def post_async(
609634 blob : Optional [bytes ] = None ,
610635 json : Optional [dict ] = None ,
611636 params : Optional [dict ] = None ,
637+ retry_strategy : Optional [RetryStrategy ] = None ,
612638 ) -> httpx .Response :
613639 """Performs an async POST-request to the Sumo API.
614640
@@ -674,7 +700,9 @@ async def _post():
674700 timeout = self ._timeout ,
675701 )
676702
677- retryer = self ._retry_strategy .make_retryer_async ()
703+ retryer = (
704+ retry_strategy if retry_strategy else self ._retry_strategy
705+ ).make_retryer_async ()
678706
679707 return await retryer (_post )
680708
@@ -684,6 +712,7 @@ async def put_async(
684712 path : str ,
685713 blob : Optional [bytes ] = None ,
686714 json : Optional [dict ] = None ,
715+ retry_strategy : Optional [RetryStrategy ] = None ,
687716 ) -> httpx .Response :
688717 """Performs an async PUT-request to the Sumo API.
689718
@@ -723,13 +752,18 @@ async def _put():
723752 timeout = self ._timeout ,
724753 )
725754
726- retryer = self ._retry_strategy .make_retryer_async ()
755+ retryer = (
756+ retry_strategy if retry_strategy else self ._retry_strategy
757+ ).make_retryer_async ()
727758
728759 return await retryer (_put )
729760
730761 @raise_for_status_async
731762 async def delete_async (
732- self , path : str , params : Optional [dict ] = None
763+ self ,
764+ path : str ,
765+ params : Optional [dict ] = None ,
766+ retry_strategy : Optional [RetryStrategy ] = None ,
733767 ) -> httpx .Response :
734768 """Performs an async DELETE-request to the Sumo API.
735769
@@ -763,12 +797,17 @@ async def _delete():
763797 timeout = self ._timeout ,
764798 )
765799
766- retryer = self ._retry_strategy .make_retryer_async ()
800+ retryer = (
801+ retry_strategy if retry_strategy else self ._retry_strategy
802+ ).make_retryer_async ()
767803
768804 return await retryer (_delete )
769805
770806 async def poll_async (
771- self , response_in : httpx .Response , timeout = None
807+ self ,
808+ response_in : httpx .Response ,
809+ timeout = None ,
810+ retry_strategy : Optional [RetryStrategy ] = None ,
772811 ) -> httpx .Response :
773812 """Poll a specific endpoint until a result is obtained.
774813
@@ -782,7 +821,9 @@ async def poll_async(
782821 expiry = time .time () + timeout if timeout is not None else None
783822 while True :
784823 await asyncio .sleep (retry_after )
785- response = await self .get_async (location )
824+ response = await self .get_async (
825+ location , retry_strategy = retry_strategy
826+ )
786827 if response .status_code != 202 :
787828 return response
788829 if expiry is not None and time .time () > expiry :
0 commit comments