Skip to content

Commit f8fce51

Browse files
stainless-app[bot]stainless-bot
authored andcommitted
fix(client): avoid OverflowError with very large retry counts (#42)
1 parent 4204bb7 commit f8fce51

File tree

2 files changed

+4
-1
lines changed

2 files changed

+4
-1
lines changed

src/lumaai/_base_client.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -689,7 +689,8 @@ def _calculate_retry_timeout(
689689
if retry_after is not None and 0 < retry_after <= 60:
690690
return retry_after
691691

692-
nb_retries = max_retries - remaining_retries
692+
# Also cap retry count to 1000 to avoid any potential overflows with `pow`
693+
nb_retries = min(max_retries - remaining_retries, 1000)
693694

694695
# Apply exponential backoff, but not more than the max.
695696
sleep_seconds = min(INITIAL_RETRY_DELAY * pow(2.0, nb_retries), MAX_RETRY_DELAY)

tests/test_client.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -700,6 +700,7 @@ class Model(BaseModel):
700700
[3, "", 0.5],
701701
[2, "", 0.5 * 2.0],
702702
[1, "", 0.5 * 4.0],
703+
[-1100, "", 7.8], # test large number potentially overflowing
703704
],
704705
)
705706
@mock.patch("time.time", mock.MagicMock(return_value=1696004797))
@@ -1482,6 +1483,7 @@ class Model(BaseModel):
14821483
[3, "", 0.5],
14831484
[2, "", 0.5 * 2.0],
14841485
[1, "", 0.5 * 4.0],
1486+
[-1100, "", 7.8], # test large number potentially overflowing
14851487
],
14861488
)
14871489
@mock.patch("time.time", mock.MagicMock(return_value=1696004797))

0 commit comments

Comments
 (0)