Skip to content

Commit 6dbe17d

Browse files
committed
made build_retry_error public
1 parent 85b3e02 commit 6dbe17d

File tree

7 files changed

+25
-21
lines changed

7 files changed

+25
-21
lines changed

google/api_core/retry/__init__.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# Copyright 2017 Google LLC
2+
23
#
34
# Licensed under the Apache License, Version 2.0 (the "License");
45
# you may not use this file except in compliance with the License.
@@ -17,7 +18,7 @@
1718
from .retry_base import exponential_sleep_generator
1819
from .retry_base import if_exception_type
1920
from .retry_base import if_transient_error
20-
from .retry_base import _build_retry_error
21+
from .retry_base import build_retry_error
2122
from .retry_base import RetryFailureReason
2223
from .retry_unary import Retry
2324
from .retry_unary import retry_target
@@ -32,7 +33,7 @@
3233
"exponential_sleep_generator",
3334
"if_exception_type",
3435
"if_transient_error",
35-
"_build_retry_error",
36+
"build_retry_error",
3637
"RetryFailureReason",
3738
"Retry",
3839
"AsyncRetry",

google/api_core/retry/retry_base.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,14 +131,17 @@ class RetryFailureReason(Enum):
131131
NON_RETRYABLE_ERROR = 1
132132

133133

134-
def _build_retry_error(
134+
def build_retry_error(
135135
exc_list: list[Exception],
136136
reason: RetryFailureReason,
137137
timeout_val: float | None,
138138
**kwargs: Any,
139139
) -> tuple[Exception, Exception | None]:
140140
"""
141-
Default exception_factory implementation. Builds an exception after the retry fails.
141+
Default exception_factory implementation.
142+
143+
Returns a RetryError if the failure is due to a timeout, otherwise
144+
returns the last exception encountered.
142145
143146
Args:
144147
- exc_list: list of exceptions that occurred during the retry

google/api_core/retry/retry_streaming.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
from google.api_core.retry.retry_base import _BaseRetry
3737
from google.api_core.retry.retry_base import _retry_error_helper
3838
from google.api_core.retry import exponential_sleep_generator
39-
from google.api_core.retry import _build_retry_error
39+
from google.api_core.retry import build_retry_error
4040
from google.api_core.retry import RetryFailureReason
4141

4242
if TYPE_CHECKING:
@@ -58,7 +58,7 @@ def retry_target_stream(
5858
exception_factory: Callable[
5959
[List[Exception], RetryFailureReason, Optional[float]],
6060
Tuple[Exception, Optional[Exception]],
61-
] = _build_retry_error,
61+
] = build_retry_error,
6262
init_args: _P.args = (),
6363
init_kwargs: _P.kwargs = {},
6464
**kwargs,

google/api_core/retry/retry_streaming_async.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
from google.api_core.retry.retry_base import _BaseRetry
3939
from google.api_core.retry.retry_base import _retry_error_helper
4040
from google.api_core.retry import exponential_sleep_generator
41-
from google.api_core.retry import _build_retry_error
41+
from google.api_core.retry import build_retry_error
4242
from google.api_core.retry import RetryFailureReason
4343

4444

@@ -61,7 +61,7 @@ async def retry_target_stream(
6161
exception_factory: Callable[
6262
[list[Exception], RetryFailureReason, float | None],
6363
tuple[Exception, Exception | None],
64-
] = _build_retry_error,
64+
] = build_retry_error,
6565
init_args: _P.args = (),
6666
init_kwargs: _P.kwargs = {},
6767
**kwargs,

google/api_core/retry/retry_unary.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ def check_if_exists():
6666
from google.api_core.retry.retry_base import _BaseRetry
6767
from google.api_core.retry.retry_base import _retry_error_helper
6868
from google.api_core.retry.retry_base import exponential_sleep_generator
69-
from google.api_core.retry.retry_base import _build_retry_error
69+
from google.api_core.retry.retry_base import build_retry_error
7070
from google.api_core.retry.retry_base import RetryFailureReason
7171

7272

@@ -91,7 +91,7 @@ def retry_target(
9191
exception_factory: Callable[
9292
[list[Exception], RetryFailureReason, float | None],
9393
tuple[Exception, Exception | None],
94-
] = _build_retry_error,
94+
] = build_retry_error,
9595
**kwargs,
9696
):
9797
"""Call a function and retry if it fails.

google/api_core/retry/retry_unary_async.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ async def check_if_exists():
6868
from google.api_core.retry.retry_base import _BaseRetry
6969
from google.api_core.retry.retry_base import _retry_error_helper
7070
from google.api_core.retry.retry_base import exponential_sleep_generator
71-
from google.api_core.retry.retry_base import _build_retry_error
71+
from google.api_core.retry.retry_base import build_retry_error
7272
from google.api_core.retry.retry_base import RetryFailureReason
7373

7474
# for backwards compatibility, expose helpers in this module
@@ -101,7 +101,7 @@ async def retry_target(
101101
exception_factory: Callable[
102102
[list[Exception], RetryFailureReason, float | None],
103103
tuple[Exception, Exception | None],
104-
] = _build_retry_error,
104+
] = build_retry_error,
105105
**kwargs,
106106
):
107107
"""Await a coroutine and retry if it fails.

tests/unit/retry/test_retry_base.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -58,47 +58,47 @@ def test_exponential_sleep_generator_base_2(uniform):
5858
assert result == [1, 2, 4, 8, 16, 32, 60, 60]
5959

6060

61-
def test__build_retry_error_empty_list():
61+
def test_build_retry_error_empty_list():
6262
"""
6363
attempt to build a retry error with no errors encountered
6464
should return a generic RetryError
6565
"""
66-
from google.api_core.retry import _build_retry_error
66+
from google.api_core.retry import build_retry_error
6767
from google.api_core.retry import RetryFailureReason
6868

6969
reason = RetryFailureReason.NON_RETRYABLE_ERROR
70-
src, cause = _build_retry_error([], reason, 10)
70+
src, cause = build_retry_error([], reason, 10)
7171
assert isinstance(src, exceptions.RetryError)
7272
assert cause is None
7373
assert src.message == "Unknown error"
7474

7575

76-
def test__build_retry_error_timeout_message():
76+
def test_build_retry_error_timeout_message():
7777
"""
7878
should provide helpful error message when timeout is reached
7979
"""
80-
from google.api_core.retry import _build_retry_error
80+
from google.api_core.retry import build_retry_error
8181
from google.api_core.retry import RetryFailureReason
8282

8383
reason = RetryFailureReason.TIMEOUT
8484
cause = RuntimeError("timeout")
85-
src, found_cause = _build_retry_error([ValueError(), cause], reason, 10)
85+
src, found_cause = build_retry_error([ValueError(), cause], reason, 10)
8686
assert isinstance(src, exceptions.RetryError)
8787
assert src.message == "Timeout of 10.0s exceeded"
8888
# should attach appropriate cause
8989
assert found_cause is cause
9090

9191

92-
def test__build_retry_error_empty_timeout():
92+
def test_build_retry_error_empty_timeout():
9393
"""
9494
attempt to build a retry error when timeout is None
9595
should return a generic timeout error message
9696
"""
97-
from google.api_core.retry import _build_retry_error
97+
from google.api_core.retry import build_retry_error
9898
from google.api_core.retry import RetryFailureReason
9999

100100
reason = RetryFailureReason.TIMEOUT
101-
src, _ = _build_retry_error([], reason, None)
101+
src, _ = build_retry_error([], reason, None)
102102
assert isinstance(src, exceptions.RetryError)
103103
assert src.message == "Timeout exceeded"
104104

0 commit comments

Comments
 (0)