Skip to content

Commit

Permalink
fix(WIP): for backwards compatibility, expose legacy retry imports
Browse files Browse the repository at this point in the history
  • Loading branch information
vchudnov-g committed Dec 20, 2023
1 parent 17ff5f1 commit ffe7555
Show file tree
Hide file tree
Showing 2 changed files with 71 additions and 1 deletion.
17 changes: 16 additions & 1 deletion google/api_core/retry/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
# Copyright 2017 Google LLC

#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -29,6 +28,22 @@
from .retry_streaming_async import AsyncStreamingRetry
from .retry_streaming_async import retry_target_stream as retry_target_stream_async

# The following imports are for backwards compatibility with https://github.com/googleapis/python-api-core/blob/4d7d2edee2c108d43deb151e6e0fdceb56b73275/google/api_core/retry.py
#
# TODO: Revert these imports on the next major version release (https://github.com/googleapis/python-api-core/issues/576)
import datetime
import functools
import logging
import random
import sys
import time
import inspect
import warnings
from typing import Any, Callable, TypeVar, TYPE_CHECKING
from google.api_core import datetime_helpers
from google.api_core import exceptions
from google.auth import exceptions as auth_exceptions

__all__ = (
"exponential_sleep_generator",
"if_exception_type",
Expand Down
55 changes: 55 additions & 0 deletions tests/unit/retry/test_retry_imports.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# Copyright 2023 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import pytest

def test_legacy_imports_retry_unary_sync():
# TODO: Delete this test when when we revert these imports on the
# next major version release
# (https://github.com/googleapis/python-api-core/issues/576)

from google.api_core.retry import logging
from google.api_core.retry import datetime
from google.api_core.retry import functools
from google.api_core.retry import logging
from google.api_core.retry import random
from google.api_core.retry import sys
from google.api_core.retry import time
from google.api_core.retry import inspect
from google.api_core.retry import warnings
from google.api_core.retry import Any, Callable, TypeVar, TYPE_CHECKING

from google.api_core.retry import datetime_helpers
from google.api_core.retry import exceptions
from google.api_core.retry import auth_exceptions

### FIXME: How do we test the following, and how do we import it in __init__.py?
# import google.api_core.retry.requests.exceptions


def test_legacy_imports_retry_unary_async():
# TODO: Delete this test when when we revert these imports on the
# next major version release
# (https://github.com/googleapis/python-api-core/issues/576)

from google.api_core import retry_async

### FIXME: each of the following cause errors on the "retry_async" part: module not found
# import google.api_core.retry_async.functools
# from google.api_core.retry_async import functools
#
## For the above, I tried the following in api_core/__init__.py
## and none made the above statements pass:
# from google.api_core.retry import retry_unary_async as retry_async
# import google.api_core.retry.retry_unary_async as retry_async

0 comments on commit ffe7555

Please sign in to comment.