chore: move retry async check to wrap time (#649)
* chore: move retry async check to wrap time
* 🦉 Updates from OwlBot post-processor
See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md
* added no cover mark
---------
Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
Co-authored-by: Anthonios Partheniou <partheniou@google.com>
diff --git a/google/api_core/retry/retry_unary.py b/google/api_core/retry/retry_unary.py
index ab1b403..0904313 100644
--- a/google/api_core/retry/retry_unary.py
+++ b/google/api_core/retry/retry_unary.py
@@ -141,10 +141,7 @@
for sleep in sleep_generator:
try:
- result = target()
- if inspect.isawaitable(result):
- warnings.warn(_ASYNC_RETRY_WARNING)
- return result
+ return target()
# pylint: disable=broad-except
# This function explicitly must deal with broad exceptions.
@@ -280,6 +277,8 @@
Callable: A callable that will invoke ``func`` with retry
behavior.
"""
+ if inspect.iscoroutinefunction(func):
+ warnings.warn(_ASYNC_RETRY_WARNING)
if self._on_error is not None:
on_error = self._on_error
diff --git a/tests/unit/retry/test_retry_unary.py b/tests/unit/retry/test_retry_unary.py
index 7dcd8dd..71f6e24 100644
--- a/tests/unit/retry/test_retry_unary.py
+++ b/tests/unit/retry/test_retry_unary.py
@@ -101,14 +101,20 @@
)
@pytest.mark.asyncio
async def test_retry_target_warning_for_retry(utcnow, sleep):
- predicate = retry.if_exception_type(ValueError)
- target = mock.AsyncMock(spec=["__call__"])
+ """
+ retry.Retry should raise warning when wrapping an async function.
+ """
+
+ async def target():
+ pass # pragma: NO COVER
+
+ retry_obj = retry.Retry()
with pytest.warns(Warning) as exc_info:
- # Note: predicate is just a filler and doesn't affect the test
- retry.retry_target(target, predicate, range(10), None)
+ # raise warning when wrapping an async function
+ retry_obj(target)
- assert len(exc_info) == 2
+ assert len(exc_info) == 1
assert str(exc_info[0].message) == retry.retry_unary._ASYNC_RETRY_WARNING
sleep.assert_not_called()