Skip to content

Commit 313c825

Browse files
committed
fixup: make caller_info non-nullable in RetryContext
1 parent 72a03c8 commit 313c825

4 files changed

Lines changed: 21 additions & 13 deletions

File tree

src/globus_sdk/transport/retry.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def __init__(
3434
self,
3535
attempt: int,
3636
*,
37-
caller_info: RequestCallerInfo | None = None,
37+
caller_info: RequestCallerInfo,
3838
response: requests.Response | None = None,
3939
exception: Exception | None = None,
4040
) -> None:

tests/unit/transport/test_default_retry_policy.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ def test_retry_policy_respects_retry_after(mocksleep, http_status):
1919
dummy_response = mock.Mock()
2020
dummy_response.headers = {"Retry-After": "5"}
2121
dummy_response.status_code = http_status
22-
ctx = RetryContext(1, response=dummy_response)
22+
caller_info = RequestCallerInfo(authorizer=None)
23+
ctx = RetryContext(1, caller_info=caller_info, response=dummy_response)
2324

2425
assert checker.should_retry(ctx) is True
2526
mocksleep.assert_not_called()
@@ -36,7 +37,8 @@ def test_retry_policy_ignores_retry_after_too_high(mocksleep, http_status):
3637
dummy_response = mock.Mock()
3738
dummy_response.headers = {"Retry-After": "20"}
3839
dummy_response.status_code = http_status
39-
ctx = RetryContext(1, response=dummy_response)
40+
caller_info = RequestCallerInfo(authorizer=None)
41+
ctx = RetryContext(1, caller_info=caller_info, response=dummy_response)
4042

4143
assert checker.should_retry(ctx) is True
4244
mocksleep.assert_not_called()
@@ -52,7 +54,8 @@ def test_retry_policy_ignores_malformed_retry_after(mocksleep, http_status):
5254
dummy_response = mock.Mock()
5355
dummy_response.headers = {"Retry-After": "not-an-integer"}
5456
dummy_response.status_code = http_status
55-
ctx = RetryContext(1, response=dummy_response)
57+
caller_info = RequestCallerInfo(authorizer=None)
58+
ctx = RetryContext(1, caller_info=caller_info, response=dummy_response)
5659

5760
assert checker.should_retry(ctx) is True
5861
mocksleep.assert_not_called()
@@ -70,7 +73,8 @@ def test_retry_policy_ignores_malformed_retry_after(mocksleep, http_status):
7073
def test_default_retry_check_noop_on_exception(checkname, mocksleep):
7174
transport = RequestsTransport()
7275
method = getattr(transport, checkname)
73-
ctx = RetryContext(1, exception=Exception("foo"))
76+
caller_info = RequestCallerInfo(authorizer=None)
77+
ctx = RetryContext(1, caller_info=caller_info, exception=Exception("foo"))
7478
assert method(ctx) is RetryCheckResult.no_decision
7579

7680

tests/unit/transport/test_retry_check_runner.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
from unittest import mock
22

3-
from globus_sdk.transport import RetryCheckResult, RetryCheckRunner, RetryContext
3+
from globus_sdk.transport import RequestCallerInfo, RetryCheckResult, RetryCheckRunner, RetryContext
44

55

66
def _make_test_retry_context(*, status=200, exception=None, response=None):
7+
caller_info = RequestCallerInfo(authorizer=None)
78
if exception:
8-
return RetryContext(1, exception=exception)
9+
return RetryContext(1, caller_info=caller_info, exception=exception)
910
elif response:
10-
return RetryContext(1, response=response)
11+
return RetryContext(1, caller_info=caller_info, response=response)
1112

1213
dummy_response = mock.Mock()
1314
dummy_response.status_code = 200
14-
return RetryContext(1, response=dummy_response)
15+
return RetryContext(1, caller_info=caller_info, response=dummy_response)
1516

1617

1718
def test_retry_check_runner_should_retry_explicit_on_first_check():

tests/unit/transport/test_transfer_transport.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from unittest import mock
22

33
from globus_sdk.services.transfer.transport import TransferRequestsTransport
4-
from globus_sdk.transport import RetryCheckRunner, RetryContext
4+
from globus_sdk.transport import RequestCallerInfo, RetryCheckRunner, RetryContext
55

66

77
def test_transfer_does_not_retry_external():
@@ -19,7 +19,8 @@ def test_transfer_does_not_retry_external():
1919
dummy_response = mock.Mock()
2020
dummy_response.json = lambda: body
2121
dummy_response.status_code = 502
22-
ctx = RetryContext(1, response=dummy_response)
22+
caller_info = RequestCallerInfo(authorizer=None)
23+
ctx = RetryContext(1, caller_info=caller_info, response=dummy_response)
2324

2425
assert checker.should_retry(ctx) is False
2526

@@ -42,7 +43,8 @@ def test_transfer_does_not_retry_endpoint_error():
4243
dummy_response = mock.Mock()
4344
dummy_response.json = lambda: body
4445
dummy_response.status_code = 502
45-
ctx = RetryContext(1, response=dummy_response)
46+
caller_info = RequestCallerInfo(authorizer=None)
47+
ctx = RetryContext(1, caller_info=caller_info, response=dummy_response)
4648

4749
assert checker.should_retry(ctx) is False
4850

@@ -57,6 +59,7 @@ def _raise_value_error():
5759
dummy_response = mock.Mock()
5860
dummy_response.json = _raise_value_error
5961
dummy_response.status_code = 502
60-
ctx = RetryContext(1, response=dummy_response)
62+
caller_info = RequestCallerInfo(authorizer=None)
63+
ctx = RetryContext(1, caller_info=caller_info, response=dummy_response)
6164

6265
assert checker.should_retry(ctx) is True

0 commit comments

Comments
 (0)