Skip to content

Commit 86c0508

Browse files
committed
Update ClientGenerator.java
1 parent f5da49f commit 86c0508

File tree

1 file changed

+22
-16
lines changed

1 file changed

+22
-16
lines changed

codegen/core/src/main/java/software/amazon/smithy/python/codegen/ClientGenerator.java

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,27 @@ def __init__(self, config: $1T | None = None, plugins: list[$2T] | None = None):
101101
self._retry_strategy_resolver = RetryStrategyResolver()
102102
""", configSymbol, pluginSymbol, writer.consumer(w -> writeDefaultPlugins(w, defaultPlugins)));
103103

104+
writer.addImport("smithy_core.retries", "RetryStrategyOptions");
105+
writer.addImport("smithy_core.interfaces.retries", "RetryStrategy");
106+
writer.write("""
107+
async def _resolve_retry_strategy(self, retry_strategy: RetryStrategy | RetryStrategyOptions | None) -> RetryStrategy:
108+
if isinstance(retry_strategy, RetryStrategy):
109+
return retry_strategy
110+
elif isinstance(retry_strategy, RetryStrategyOptions):
111+
return await self._retry_strategy_resolver.resolve_retry_strategy(
112+
options=retry_strategy
113+
)
114+
elif retry_strategy is None:
115+
return await self._retry_strategy_resolver.resolve_retry_strategy(
116+
options=RetryStrategyOptions()
117+
)
118+
else:
119+
raise TypeError(
120+
f"retry_strategy must be RetryStrategy, RetryStrategyOptions, or None, "
121+
f"got {type(retry_strategy).__name__}"
122+
)
123+
""");
124+
104125
var topDownIndex = TopDownIndex.of(model);
105126
var eventStreamIndex = EventStreamIndex.of(model);
106127
for (OperationShape operation : topDownIndex.getContainedOperations(service)) {
@@ -207,22 +228,7 @@ private void writeSharedOperationInit(PythonWriter writer, OperationShape operat
207228
if config.protocol is None or config.transport is None:
208229
raise ExpectationNotMetError("protocol and transport MUST be set on the config to make calls.")
209230
210-
# Resolve retry strategy from config
211-
if isinstance(config.retry_strategy, RetryStrategy):
212-
retry_strategy = config.retry_strategy
213-
elif isinstance(config.retry_strategy, RetryStrategyOptions):
214-
retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy(
215-
options=config.retry_strategy
216-
)
217-
elif config.retry_strategy is None:
218-
retry_strategy = await self._retry_strategy_resolver.resolve_retry_strategy(
219-
options=RetryStrategyOptions()
220-
)
221-
else:
222-
raise TypeError(
223-
f"retry_strategy must be RetryStrategy, RetryStrategyOptions, or None, "
224-
f"got {type(config.retry_strategy).__name__}"
225-
)
231+
retry_strategy = await self._resolve_retry_strategy(config.retry_strategy)
226232
227233
pipeline = RequestPipeline(
228234
protocol=config.protocol,

0 commit comments

Comments
 (0)