1212from .interfaces import retries as retries_interface
1313from .interfaces .retries import RetryStrategy
1414
15- RetryStrategyType = Literal ["simple" ]
15+ RetryStrategyType = Literal ["simple" , "standard" ]
1616
1717
1818@dataclass (kw_only = True , frozen = True )
1919class RetryStrategyOptions :
2020 """Options for configuring retry behavior."""
2121
22- retry_mode : RetryStrategyType = "simple "
22+ retry_mode : RetryStrategyType = "standard "
2323 """The retry mode to use."""
2424
25- max_attempts : int = 3
26- """Maximum number of attempts (initial attempt plus retries)."""
25+ max_attempts : int | None = None
26+ """Maximum number of attempts (initial attempt plus retries). If None, uses the strategy's default. """
2727
2828
2929class RetryStrategyResolver :
@@ -44,11 +44,19 @@ async def resolve_retry_strategy(
4444
4545 @lru_cache
4646 def _create_retry_strategy (
47- self , retry_mode : RetryStrategyType , max_attempts : int
47+ self , retry_mode : RetryStrategyType , max_attempts : int | None
4848 ) -> RetryStrategy :
4949 match retry_mode :
5050 case "simple" :
51- return SimpleRetryStrategy (max_attempts = max_attempts )
51+ if max_attempts is None :
52+ return SimpleRetryStrategy ()
53+ else :
54+ return SimpleRetryStrategy (max_attempts = max_attempts )
55+ case "standard" :
56+ if max_attempts is None :
57+ return StandardRetryStrategy ()
58+ else :
59+ return StandardRetryStrategy (max_attempts = max_attempts )
5260 case _:
5361 raise ValueError (f"Unknown retry mode: { retry_mode } " )
5462
0 commit comments