Skip to content

Commit a03d903

Browse files
committed
Fix type error in 429 retrying behavior with Retry-After header
1 parent b8ad41a commit a03d903

File tree

3 files changed

+6
-5
lines changed

3 files changed

+6
-5
lines changed

b2sdk/_internal/exception.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -452,7 +452,11 @@ def __str__(self):
452452
class TooManyRequests(B2Error):
453453
def __init__(self, retry_after_seconds=None):
454454
super().__init__()
455-
self.retry_after_seconds = retry_after_seconds
455+
456+
if retry_after_seconds is not None:
457+
self.retry_after_seconds = int(retry_after_seconds)
458+
else:
459+
self.retry_after_seconds = None
456460

457461
def __str__(self):
458462
return 'Too many requests'
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix type error in retrying behavior for 429 status with Retry-After header value set.

test/unit/b2http/test_b2http.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,6 @@ def test_never_works(self, b2_http: B2Http, mock_time: MagicMock):
344344

345345
assert mock_time.mock_calls == [call(1.0), call(1.5)]
346346

347-
@pytest.mark.xfail(reason='no int conversion in the retry-after header parsing logic')
348347
@responses.activate
349348
def test_too_many_requests_works_after_sleep(self, b2_http: B2Http, mock_time: MagicMock):
350349
_mock_error_response(self.URL, status=429, headers={'Retry-After': '2'})
@@ -353,7 +352,6 @@ def test_too_many_requests_works_after_sleep(self, b2_http: B2Http, mock_time: M
353352
b2_http.request(responses.GET, self.URL, {})
354353
mock_time.assert_called_once_with(2)
355354

356-
@pytest.mark.xfail(reason='no int conversion in the retry-after header parsing logic')
357355
@responses.activate
358356
def test_too_many_requests_failed_after_sleep(self, b2_http: B2Http, mock_time: MagicMock):
359357
_mock_error_response(self.URL, status=429, headers={'Retry-After': '2'})
@@ -363,7 +361,6 @@ def test_too_many_requests_failed_after_sleep(self, b2_http: B2Http, mock_time:
363361
b2_http.request(responses.GET, self.URL, {}, try_count=2)
364362
mock_time.assert_called_once_with(2)
365363

366-
@pytest.mark.xfail(reason='no int conversion in the retry-after header parsing logic')
367364
@responses.activate
368365
def test_too_many_requests_retry_header_combination_one(
369366
self, b2_http: B2Http, mock_time: MagicMock
@@ -377,7 +374,6 @@ def test_too_many_requests_retry_header_combination_one(
377374
b2_http.request(responses.GET, self.URL, {}, try_count=4)
378375
assert mock_time.mock_calls == [call(2), call(1.5), call(2)]
379376

380-
@pytest.mark.xfail(reason='no int conversion in the retry-after header parsing logic')
381377
@responses.activate
382378
def test_too_many_requests_retry_header_combination_two(
383379
self, b2_http: B2Http, mock_time: MagicMock

0 commit comments

Comments
 (0)