diff --git a/google/cloud/tpu_v1/services/tpu/async_client.py b/google/cloud/tpu_v1/services/tpu/async_client.py index 3d2c92a..4aaf002 100644 --- a/google/cloud/tpu_v1/services/tpu/async_client.py +++ b/google/cloud/tpu_v1/services/tpu/async_client.py @@ -19,13 +19,15 @@ from typing import Dict, Sequence, Tuple, Type, Union import pkg_resources -import google.api_core.client_options as ClientOptions # type: ignore +from google.api_core.client_options import ClientOptions # type: ignore from google.api_core import exceptions as core_exceptions # type: ignore from google.api_core import gapic_v1 # type: ignore from google.api_core import retry as retries # type: ignore from google.auth import credentials as ga_credentials # type: ignore from google.oauth2 import service_account # type: ignore +OptionalRetry = Union[retries.Retry, object] + from google.api_core import operation # type: ignore from google.api_core import operation_async # type: ignore from google.cloud.tpu_v1.services.tpu import pagers @@ -164,17 +166,17 @@ def __init__( async def list_nodes( self, - request: cloud_tpu.ListNodesRequest = None, + request: Union[cloud_tpu.ListNodesRequest, dict] = None, *, parent: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListNodesAsyncPager: r"""Lists nodes. Args: - request (:class:`google.cloud.tpu_v1.types.ListNodesRequest`): + request (Union[google.cloud.tpu_v1.types.ListNodesRequest, dict]): The request object. Request for [ListNodes][google.cloud.tpu.v1.Tpu.ListNodes]. parent (:class:`str`): @@ -242,17 +244,17 @@ async def list_nodes( async def get_node( self, - request: cloud_tpu.GetNodeRequest = None, + request: Union[cloud_tpu.GetNodeRequest, dict] = None, *, name: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> cloud_tpu.Node: r"""Gets the details of a node. Args: - request (:class:`google.cloud.tpu_v1.types.GetNodeRequest`): + request (Union[google.cloud.tpu_v1.types.GetNodeRequest, dict]): The request object. Request for [GetNode][google.cloud.tpu.v1.Tpu.GetNode]. name (:class:`str`): @@ -309,19 +311,19 @@ async def get_node( async def create_node( self, - request: cloud_tpu.CreateNodeRequest = None, + request: Union[cloud_tpu.CreateNodeRequest, dict] = None, *, parent: str = None, node: cloud_tpu.Node = None, node_id: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation_async.AsyncOperation: r"""Creates a node. Args: - request (:class:`google.cloud.tpu_v1.types.CreateNodeRequest`): + request (Union[google.cloud.tpu_v1.types.CreateNodeRequest, dict]): The request object. Request for [CreateNode][google.cloud.tpu.v1.Tpu.CreateNode]. parent (:class:`str`): @@ -404,17 +406,17 @@ async def create_node( async def delete_node( self, - request: cloud_tpu.DeleteNodeRequest = None, + request: Union[cloud_tpu.DeleteNodeRequest, dict] = None, *, name: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation_async.AsyncOperation: r"""Deletes a node. Args: - request (:class:`google.cloud.tpu_v1.types.DeleteNodeRequest`): + request (Union[google.cloud.tpu_v1.types.DeleteNodeRequest, dict]): The request object. Request for [DeleteNode][google.cloud.tpu.v1.Tpu.DeleteNode]. name (:class:`str`): @@ -483,16 +485,16 @@ async def delete_node( async def reimage_node( self, - request: cloud_tpu.ReimageNodeRequest = None, + request: Union[cloud_tpu.ReimageNodeRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation_async.AsyncOperation: r"""Reimages a node's OS. Args: - request (:class:`google.cloud.tpu_v1.types.ReimageNodeRequest`): + request (Union[google.cloud.tpu_v1.types.ReimageNodeRequest, dict]): The request object. Request for [ReimageNode][google.cloud.tpu.v1.Tpu.ReimageNode]. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -542,16 +544,16 @@ async def reimage_node( async def stop_node( self, - request: cloud_tpu.StopNodeRequest = None, + request: Union[cloud_tpu.StopNodeRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation_async.AsyncOperation: r"""Stops a node. Args: - request (:class:`google.cloud.tpu_v1.types.StopNodeRequest`): + request (Union[google.cloud.tpu_v1.types.StopNodeRequest, dict]): The request object. Request for [StopNode][google.cloud.tpu.v1.Tpu.StopNode]. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -601,16 +603,16 @@ async def stop_node( async def start_node( self, - request: cloud_tpu.StartNodeRequest = None, + request: Union[cloud_tpu.StartNodeRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation_async.AsyncOperation: r"""Starts a node. Args: - request (:class:`google.cloud.tpu_v1.types.StartNodeRequest`): + request (Union[google.cloud.tpu_v1.types.StartNodeRequest, dict]): The request object. Request for [StartNode][google.cloud.tpu.v1.Tpu.StartNode]. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -660,17 +662,17 @@ async def start_node( async def list_tensor_flow_versions( self, - request: cloud_tpu.ListTensorFlowVersionsRequest = None, + request: Union[cloud_tpu.ListTensorFlowVersionsRequest, dict] = None, *, parent: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListTensorFlowVersionsAsyncPager: r"""List TensorFlow versions supported by this API. Args: - request (:class:`google.cloud.tpu_v1.types.ListTensorFlowVersionsRequest`): + request (Union[google.cloud.tpu_v1.types.ListTensorFlowVersionsRequest, dict]): The request object. Request for [ListTensorFlowVersions][google.cloud.tpu.v1.Tpu.ListTensorFlowVersions]. parent (:class:`str`): @@ -738,17 +740,17 @@ async def list_tensor_flow_versions( async def get_tensor_flow_version( self, - request: cloud_tpu.GetTensorFlowVersionRequest = None, + request: Union[cloud_tpu.GetTensorFlowVersionRequest, dict] = None, *, name: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> cloud_tpu.TensorFlowVersion: r"""Gets TensorFlow Version. Args: - request (:class:`google.cloud.tpu_v1.types.GetTensorFlowVersionRequest`): + request (Union[google.cloud.tpu_v1.types.GetTensorFlowVersionRequest, dict]): The request object. Request for [GetTensorFlowVersion][google.cloud.tpu.v1.Tpu.GetTensorFlowVersion]. name (:class:`str`): @@ -807,17 +809,17 @@ async def get_tensor_flow_version( async def list_accelerator_types( self, - request: cloud_tpu.ListAcceleratorTypesRequest = None, + request: Union[cloud_tpu.ListAcceleratorTypesRequest, dict] = None, *, parent: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListAcceleratorTypesAsyncPager: r"""Lists accelerator types supported by this API. Args: - request (:class:`google.cloud.tpu_v1.types.ListAcceleratorTypesRequest`): + request (Union[google.cloud.tpu_v1.types.ListAcceleratorTypesRequest, dict]): The request object. Request for [ListAcceleratorTypes][google.cloud.tpu.v1.Tpu.ListAcceleratorTypes]. parent (:class:`str`): @@ -885,17 +887,17 @@ async def list_accelerator_types( async def get_accelerator_type( self, - request: cloud_tpu.GetAcceleratorTypeRequest = None, + request: Union[cloud_tpu.GetAcceleratorTypeRequest, dict] = None, *, name: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> cloud_tpu.AcceleratorType: r"""Gets AcceleratorType. Args: - request (:class:`google.cloud.tpu_v1.types.GetAcceleratorTypeRequest`): + request (Union[google.cloud.tpu_v1.types.GetAcceleratorTypeRequest, dict]): The request object. Request for [GetAcceleratorType][google.cloud.tpu.v1.Tpu.GetAcceleratorType]. name (:class:`str`): diff --git a/google/cloud/tpu_v1/services/tpu/client.py b/google/cloud/tpu_v1/services/tpu/client.py index b1c3fec..3672139 100644 --- a/google/cloud/tpu_v1/services/tpu/client.py +++ b/google/cloud/tpu_v1/services/tpu/client.py @@ -30,6 +30,8 @@ from google.auth.exceptions import MutualTLSChannelError # type: ignore from google.oauth2 import service_account # type: ignore +OptionalRetry = Union[retries.Retry, object] + from google.api_core import operation # type: ignore from google.api_core import operation_async # type: ignore from google.cloud.tpu_v1.services.tpu import pagers @@ -391,7 +393,7 @@ def list_nodes( request: Union[cloud_tpu.ListNodesRequest, dict] = None, *, parent: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListNodesPager: @@ -469,7 +471,7 @@ def get_node( request: Union[cloud_tpu.GetNodeRequest, dict] = None, *, name: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> cloud_tpu.Node: @@ -538,7 +540,7 @@ def create_node( parent: str = None, node: cloud_tpu.Node = None, node_id: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -631,7 +633,7 @@ def delete_node( request: Union[cloud_tpu.DeleteNodeRequest, dict] = None, *, name: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -709,7 +711,7 @@ def reimage_node( self, request: Union[cloud_tpu.ReimageNodeRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -769,7 +771,7 @@ def stop_node( self, request: Union[cloud_tpu.StopNodeRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -829,7 +831,7 @@ def start_node( self, request: Union[cloud_tpu.StartNodeRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -890,7 +892,7 @@ def list_tensor_flow_versions( request: Union[cloud_tpu.ListTensorFlowVersionsRequest, dict] = None, *, parent: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListTensorFlowVersionsPager: @@ -970,7 +972,7 @@ def get_tensor_flow_version( request: Union[cloud_tpu.GetTensorFlowVersionRequest, dict] = None, *, name: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> cloud_tpu.TensorFlowVersion: @@ -1039,7 +1041,7 @@ def list_accelerator_types( request: Union[cloud_tpu.ListAcceleratorTypesRequest, dict] = None, *, parent: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListAcceleratorTypesPager: @@ -1117,7 +1119,7 @@ def get_accelerator_type( request: Union[cloud_tpu.GetAcceleratorTypeRequest, dict] = None, *, name: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> cloud_tpu.AcceleratorType: diff --git a/google/cloud/tpu_v1/services/tpu/transports/base.py b/google/cloud/tpu_v1/services/tpu/transports/base.py index 512db45..d2cc902 100644 --- a/google/cloud/tpu_v1/services/tpu/transports/base.py +++ b/google/cloud/tpu_v1/services/tpu/transports/base.py @@ -15,7 +15,6 @@ # import abc from typing import Awaitable, Callable, Dict, Optional, Sequence, Union -import packaging.version import pkg_resources import google.auth # type: ignore @@ -37,15 +36,6 @@ except pkg_resources.DistributionNotFound: DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo() -try: - # google.auth.__version__ was added in 1.26.0 - _GOOGLE_AUTH_VERSION = google.auth.__version__ -except AttributeError: - try: # try pkg_resources if it is available - _GOOGLE_AUTH_VERSION = pkg_resources.get_distribution("google-auth").version - except pkg_resources.DistributionNotFound: # pragma: NO COVER - _GOOGLE_AUTH_VERSION = None - class TpuTransport(abc.ABC): """Abstract transport class for Tpu.""" @@ -95,7 +85,7 @@ def __init__( host += ":443" self._host = host - scopes_kwargs = self._get_scopes_kwargs(self._host, scopes) + scopes_kwargs = {"scopes": scopes, "default_scopes": self.AUTH_SCOPES} # Save the scopes. self._scopes = scopes @@ -128,29 +118,6 @@ def __init__( # Save the credentials. self._credentials = credentials - # TODO(busunkim): This method is in the base transport - # to avoid duplicating code across the transport classes. These functions - # should be deleted once the minimum required versions of google-auth is increased. - - # TODO: Remove this function once google-auth >= 1.25.0 is required - @classmethod - def _get_scopes_kwargs( - cls, host: str, scopes: Optional[Sequence[str]] - ) -> Dict[str, Optional[Sequence[str]]]: - """Returns scopes kwargs to pass to google-auth methods depending on the google-auth version""" - - scopes_kwargs = {} - - if _GOOGLE_AUTH_VERSION and ( - packaging.version.parse(_GOOGLE_AUTH_VERSION) - >= packaging.version.parse("1.25.0") - ): - scopes_kwargs = {"scopes": scopes, "default_scopes": cls.AUTH_SCOPES} - else: - scopes_kwargs = {"scopes": scopes or cls.AUTH_SCOPES} - - return scopes_kwargs - def _prep_wrapped_messages(self, client_info): # Precompute the wrapped methods. self._wrapped_methods = { @@ -207,7 +174,7 @@ def close(self): raise NotImplementedError() @property - def operations_client(self) -> operations_v1.OperationsClient: + def operations_client(self): """Return the client designed to process long-running operations.""" raise NotImplementedError() diff --git a/google/cloud/tpu_v1/services/tpu/transports/grpc.py b/google/cloud/tpu_v1/services/tpu/transports/grpc.py index 7aecd4d..8e29ec7 100644 --- a/google/cloud/tpu_v1/services/tpu/transports/grpc.py +++ b/google/cloud/tpu_v1/services/tpu/transports/grpc.py @@ -113,7 +113,7 @@ def __init__( self._grpc_channel = None self._ssl_channel_credentials = ssl_channel_credentials self._stubs: Dict[str, Callable] = {} - self._operations_client = None + self._operations_client: Optional[operations_v1.OperationsClient] = None if api_mtls_endpoint: warnings.warn("api_mtls_endpoint is deprecated", DeprecationWarning) diff --git a/google/cloud/tpu_v1/services/tpu/transports/grpc_asyncio.py b/google/cloud/tpu_v1/services/tpu/transports/grpc_asyncio.py index 383c8ff..381918c 100644 --- a/google/cloud/tpu_v1/services/tpu/transports/grpc_asyncio.py +++ b/google/cloud/tpu_v1/services/tpu/transports/grpc_asyncio.py @@ -21,7 +21,6 @@ from google.api_core import operations_v1 # type: ignore from google.auth import credentials as ga_credentials # type: ignore from google.auth.transport.grpc import SslCredentials # type: ignore -import packaging.version import grpc # type: ignore from grpc.experimental import aio # type: ignore @@ -160,7 +159,7 @@ def __init__( self._grpc_channel = None self._ssl_channel_credentials = ssl_channel_credentials self._stubs: Dict[str, Callable] = {} - self._operations_client = None + self._operations_client: Optional[operations_v1.OperationsAsyncClient] = None if api_mtls_endpoint: warnings.warn("api_mtls_endpoint is deprecated", DeprecationWarning) diff --git a/google/cloud/tpu_v2alpha1/services/tpu/async_client.py b/google/cloud/tpu_v2alpha1/services/tpu/async_client.py index fdd1076..9947dc9 100644 --- a/google/cloud/tpu_v2alpha1/services/tpu/async_client.py +++ b/google/cloud/tpu_v2alpha1/services/tpu/async_client.py @@ -19,13 +19,15 @@ from typing import Dict, Sequence, Tuple, Type, Union import pkg_resources -import google.api_core.client_options as ClientOptions # type: ignore +from google.api_core.client_options import ClientOptions # type: ignore from google.api_core import exceptions as core_exceptions # type: ignore from google.api_core import gapic_v1 # type: ignore from google.api_core import retry as retries # type: ignore from google.auth import credentials as ga_credentials # type: ignore from google.oauth2 import service_account # type: ignore +OptionalRetry = Union[retries.Retry, object] + from google.api_core import operation # type: ignore from google.api_core import operation_async # type: ignore from google.cloud.tpu_v2alpha1.services.tpu import pagers @@ -163,17 +165,17 @@ def __init__( async def list_nodes( self, - request: cloud_tpu.ListNodesRequest = None, + request: Union[cloud_tpu.ListNodesRequest, dict] = None, *, parent: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListNodesAsyncPager: r"""Lists nodes. Args: - request (:class:`google.cloud.tpu_v2alpha1.types.ListNodesRequest`): + request (Union[google.cloud.tpu_v2alpha1.types.ListNodesRequest, dict]): The request object. Request for [ListNodes][google.cloud.tpu.v2alpha1.Tpu.ListNodes]. parent (:class:`str`): @@ -241,17 +243,17 @@ async def list_nodes( async def get_node( self, - request: cloud_tpu.GetNodeRequest = None, + request: Union[cloud_tpu.GetNodeRequest, dict] = None, *, name: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> cloud_tpu.Node: r"""Gets the details of a node. Args: - request (:class:`google.cloud.tpu_v2alpha1.types.GetNodeRequest`): + request (Union[google.cloud.tpu_v2alpha1.types.GetNodeRequest, dict]): The request object. Request for [GetNode][google.cloud.tpu.v2alpha1.Tpu.GetNode]. name (:class:`str`): @@ -308,19 +310,19 @@ async def get_node( async def create_node( self, - request: cloud_tpu.CreateNodeRequest = None, + request: Union[cloud_tpu.CreateNodeRequest, dict] = None, *, parent: str = None, node: cloud_tpu.Node = None, node_id: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation_async.AsyncOperation: r"""Creates a node. Args: - request (:class:`google.cloud.tpu_v2alpha1.types.CreateNodeRequest`): + request (Union[google.cloud.tpu_v2alpha1.types.CreateNodeRequest, dict]): The request object. Request for [CreateNode][google.cloud.tpu.v2alpha1.Tpu.CreateNode]. parent (:class:`str`): @@ -404,17 +406,17 @@ async def create_node( async def delete_node( self, - request: cloud_tpu.DeleteNodeRequest = None, + request: Union[cloud_tpu.DeleteNodeRequest, dict] = None, *, name: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation_async.AsyncOperation: r"""Deletes a node. Args: - request (:class:`google.cloud.tpu_v2alpha1.types.DeleteNodeRequest`): + request (Union[google.cloud.tpu_v2alpha1.types.DeleteNodeRequest, dict]): The request object. Request for [DeleteNode][google.cloud.tpu.v2alpha1.Tpu.DeleteNode]. name (:class:`str`): @@ -484,9 +486,9 @@ async def delete_node( async def stop_node( self, - request: cloud_tpu.StopNodeRequest = None, + request: Union[cloud_tpu.StopNodeRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation_async.AsyncOperation: @@ -494,7 +496,7 @@ async def stop_node( single TPU nodes. Args: - request (:class:`google.cloud.tpu_v2alpha1.types.StopNodeRequest`): + request (Union[google.cloud.tpu_v2alpha1.types.StopNodeRequest, dict]): The request object. Request for [StopNode][google.cloud.tpu.v2alpha1.Tpu.StopNode]. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -545,16 +547,16 @@ async def stop_node( async def start_node( self, - request: cloud_tpu.StartNodeRequest = None, + request: Union[cloud_tpu.StartNodeRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation_async.AsyncOperation: r"""Starts a node. Args: - request (:class:`google.cloud.tpu_v2alpha1.types.StartNodeRequest`): + request (Union[google.cloud.tpu_v2alpha1.types.StartNodeRequest, dict]): The request object. Request for [StartNode][google.cloud.tpu.v2alpha1.Tpu.StartNode]. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -605,18 +607,18 @@ async def start_node( async def update_node( self, - request: cloud_tpu.UpdateNodeRequest = None, + request: Union[cloud_tpu.UpdateNodeRequest, dict] = None, *, node: cloud_tpu.Node = None, update_mask: field_mask_pb2.FieldMask = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation_async.AsyncOperation: r"""Updates the configurations of a node. Args: - request (:class:`google.cloud.tpu_v2alpha1.types.UpdateNodeRequest`): + request (Union[google.cloud.tpu_v2alpha1.types.UpdateNodeRequest, dict]): The request object. Request for [UpdateNode][google.cloud.tpu.v2alpha1.Tpu.UpdateNode]. node (:class:`google.cloud.tpu_v2alpha1.types.Node`): @@ -699,9 +701,9 @@ async def update_node( async def generate_service_identity( self, - request: cloud_tpu.GenerateServiceIdentityRequest = None, + request: Union[cloud_tpu.GenerateServiceIdentityRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> cloud_tpu.GenerateServiceIdentityResponse: @@ -709,7 +711,7 @@ async def generate_service_identity( project. Args: - request (:class:`google.cloud.tpu_v2alpha1.types.GenerateServiceIdentityRequest`): + request (Union[google.cloud.tpu_v2alpha1.types.GenerateServiceIdentityRequest, dict]): The request object. Request for [GenerateServiceIdentity][google.cloud.tpu.v2alpha1.Tpu.GenerateServiceIdentity]. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -749,17 +751,17 @@ async def generate_service_identity( async def list_accelerator_types( self, - request: cloud_tpu.ListAcceleratorTypesRequest = None, + request: Union[cloud_tpu.ListAcceleratorTypesRequest, dict] = None, *, parent: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListAcceleratorTypesAsyncPager: r"""Lists accelerator types supported by this API. Args: - request (:class:`google.cloud.tpu_v2alpha1.types.ListAcceleratorTypesRequest`): + request (Union[google.cloud.tpu_v2alpha1.types.ListAcceleratorTypesRequest, dict]): The request object. Request for [ListAcceleratorTypes][google.cloud.tpu.v2alpha1.Tpu.ListAcceleratorTypes]. parent (:class:`str`): @@ -827,17 +829,17 @@ async def list_accelerator_types( async def get_accelerator_type( self, - request: cloud_tpu.GetAcceleratorTypeRequest = None, + request: Union[cloud_tpu.GetAcceleratorTypeRequest, dict] = None, *, name: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> cloud_tpu.AcceleratorType: r"""Gets AcceleratorType. Args: - request (:class:`google.cloud.tpu_v2alpha1.types.GetAcceleratorTypeRequest`): + request (Union[google.cloud.tpu_v2alpha1.types.GetAcceleratorTypeRequest, dict]): The request object. Request for [GetAcceleratorType][google.cloud.tpu.v2alpha1.Tpu.GetAcceleratorType]. name (:class:`str`): @@ -896,17 +898,17 @@ async def get_accelerator_type( async def list_runtime_versions( self, - request: cloud_tpu.ListRuntimeVersionsRequest = None, + request: Union[cloud_tpu.ListRuntimeVersionsRequest, dict] = None, *, parent: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListRuntimeVersionsAsyncPager: r"""Lists runtime versions supported by this API. Args: - request (:class:`google.cloud.tpu_v2alpha1.types.ListRuntimeVersionsRequest`): + request (Union[google.cloud.tpu_v2alpha1.types.ListRuntimeVersionsRequest, dict]): The request object. Request for [ListRuntimeVersions][google.cloud.tpu.v2alpha1.Tpu.ListRuntimeVersions]. parent (:class:`str`): @@ -974,17 +976,17 @@ async def list_runtime_versions( async def get_runtime_version( self, - request: cloud_tpu.GetRuntimeVersionRequest = None, + request: Union[cloud_tpu.GetRuntimeVersionRequest, dict] = None, *, name: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> cloud_tpu.RuntimeVersion: r"""Gets a runtime version. Args: - request (:class:`google.cloud.tpu_v2alpha1.types.GetRuntimeVersionRequest`): + request (Union[google.cloud.tpu_v2alpha1.types.GetRuntimeVersionRequest, dict]): The request object. Request for [GetRuntimeVersion][google.cloud.tpu.v2alpha1.Tpu.GetRuntimeVersion]. name (:class:`str`): @@ -1043,16 +1045,16 @@ async def get_runtime_version( async def get_guest_attributes( self, - request: cloud_tpu.GetGuestAttributesRequest = None, + request: Union[cloud_tpu.GetGuestAttributesRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> cloud_tpu.GetGuestAttributesResponse: r"""Retrieves the guest attributes for the node. Args: - request (:class:`google.cloud.tpu_v2alpha1.types.GetGuestAttributesRequest`): + request (Union[google.cloud.tpu_v2alpha1.types.GetGuestAttributesRequest, dict]): The request object. Request for [GetGuestAttributes][google.cloud.tpu.v2alpha1.Tpu.GetGuestAttributes]. retry (google.api_core.retry.Retry): Designation of what errors, if any, diff --git a/google/cloud/tpu_v2alpha1/services/tpu/client.py b/google/cloud/tpu_v2alpha1/services/tpu/client.py index 1c76efc..7ca7e41 100644 --- a/google/cloud/tpu_v2alpha1/services/tpu/client.py +++ b/google/cloud/tpu_v2alpha1/services/tpu/client.py @@ -30,6 +30,8 @@ from google.auth.exceptions import MutualTLSChannelError # type: ignore from google.oauth2 import service_account # type: ignore +OptionalRetry = Union[retries.Retry, object] + from google.api_core import operation # type: ignore from google.api_core import operation_async # type: ignore from google.cloud.tpu_v2alpha1.services.tpu import pagers @@ -390,7 +392,7 @@ def list_nodes( request: Union[cloud_tpu.ListNodesRequest, dict] = None, *, parent: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListNodesPager: @@ -468,7 +470,7 @@ def get_node( request: Union[cloud_tpu.GetNodeRequest, dict] = None, *, name: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> cloud_tpu.Node: @@ -537,7 +539,7 @@ def create_node( parent: str = None, node: cloud_tpu.Node = None, node_id: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -631,7 +633,7 @@ def delete_node( request: Union[cloud_tpu.DeleteNodeRequest, dict] = None, *, name: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -710,7 +712,7 @@ def stop_node( self, request: Union[cloud_tpu.StopNodeRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -772,7 +774,7 @@ def start_node( self, request: Union[cloud_tpu.StartNodeRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -835,7 +837,7 @@ def update_node( *, node: cloud_tpu.Node = None, update_mask: field_mask_pb2.FieldMask = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -927,7 +929,7 @@ def generate_service_identity( self, request: Union[cloud_tpu.GenerateServiceIdentityRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> cloud_tpu.GenerateServiceIdentityResponse: @@ -981,7 +983,7 @@ def list_accelerator_types( request: Union[cloud_tpu.ListAcceleratorTypesRequest, dict] = None, *, parent: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListAcceleratorTypesPager: @@ -1059,7 +1061,7 @@ def get_accelerator_type( request: Union[cloud_tpu.GetAcceleratorTypeRequest, dict] = None, *, name: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> cloud_tpu.AcceleratorType: @@ -1128,7 +1130,7 @@ def list_runtime_versions( request: Union[cloud_tpu.ListRuntimeVersionsRequest, dict] = None, *, parent: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListRuntimeVersionsPager: @@ -1206,7 +1208,7 @@ def get_runtime_version( request: Union[cloud_tpu.GetRuntimeVersionRequest, dict] = None, *, name: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> cloud_tpu.RuntimeVersion: @@ -1274,7 +1276,7 @@ def get_guest_attributes( self, request: Union[cloud_tpu.GetGuestAttributesRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> cloud_tpu.GetGuestAttributesResponse: diff --git a/google/cloud/tpu_v2alpha1/services/tpu/transports/base.py b/google/cloud/tpu_v2alpha1/services/tpu/transports/base.py index 6cc209d..21e5387 100644 --- a/google/cloud/tpu_v2alpha1/services/tpu/transports/base.py +++ b/google/cloud/tpu_v2alpha1/services/tpu/transports/base.py @@ -15,7 +15,6 @@ # import abc from typing import Awaitable, Callable, Dict, Optional, Sequence, Union -import packaging.version import pkg_resources import google.auth # type: ignore @@ -37,15 +36,6 @@ except pkg_resources.DistributionNotFound: DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo() -try: - # google.auth.__version__ was added in 1.26.0 - _GOOGLE_AUTH_VERSION = google.auth.__version__ -except AttributeError: - try: # try pkg_resources if it is available - _GOOGLE_AUTH_VERSION = pkg_resources.get_distribution("google-auth").version - except pkg_resources.DistributionNotFound: # pragma: NO COVER - _GOOGLE_AUTH_VERSION = None - class TpuTransport(abc.ABC): """Abstract transport class for Tpu.""" @@ -95,7 +85,7 @@ def __init__( host += ":443" self._host = host - scopes_kwargs = self._get_scopes_kwargs(self._host, scopes) + scopes_kwargs = {"scopes": scopes, "default_scopes": self.AUTH_SCOPES} # Save the scopes. self._scopes = scopes @@ -128,29 +118,6 @@ def __init__( # Save the credentials. self._credentials = credentials - # TODO(busunkim): This method is in the base transport - # to avoid duplicating code across the transport classes. These functions - # should be deleted once the minimum required versions of google-auth is increased. - - # TODO: Remove this function once google-auth >= 1.25.0 is required - @classmethod - def _get_scopes_kwargs( - cls, host: str, scopes: Optional[Sequence[str]] - ) -> Dict[str, Optional[Sequence[str]]]: - """Returns scopes kwargs to pass to google-auth methods depending on the google-auth version""" - - scopes_kwargs = {} - - if _GOOGLE_AUTH_VERSION and ( - packaging.version.parse(_GOOGLE_AUTH_VERSION) - >= packaging.version.parse("1.25.0") - ): - scopes_kwargs = {"scopes": scopes, "default_scopes": cls.AUTH_SCOPES} - else: - scopes_kwargs = {"scopes": scopes or cls.AUTH_SCOPES} - - return scopes_kwargs - def _prep_wrapped_messages(self, client_info): # Precompute the wrapped methods. self._wrapped_methods = { @@ -215,7 +182,7 @@ def close(self): raise NotImplementedError() @property - def operations_client(self) -> operations_v1.OperationsClient: + def operations_client(self): """Return the client designed to process long-running operations.""" raise NotImplementedError() diff --git a/google/cloud/tpu_v2alpha1/services/tpu/transports/grpc.py b/google/cloud/tpu_v2alpha1/services/tpu/transports/grpc.py index e31acf6..1a23557 100644 --- a/google/cloud/tpu_v2alpha1/services/tpu/transports/grpc.py +++ b/google/cloud/tpu_v2alpha1/services/tpu/transports/grpc.py @@ -113,7 +113,7 @@ def __init__( self._grpc_channel = None self._ssl_channel_credentials = ssl_channel_credentials self._stubs: Dict[str, Callable] = {} - self._operations_client = None + self._operations_client: Optional[operations_v1.OperationsClient] = None if api_mtls_endpoint: warnings.warn("api_mtls_endpoint is deprecated", DeprecationWarning) diff --git a/google/cloud/tpu_v2alpha1/services/tpu/transports/grpc_asyncio.py b/google/cloud/tpu_v2alpha1/services/tpu/transports/grpc_asyncio.py index 9ef622e..8f991f8 100644 --- a/google/cloud/tpu_v2alpha1/services/tpu/transports/grpc_asyncio.py +++ b/google/cloud/tpu_v2alpha1/services/tpu/transports/grpc_asyncio.py @@ -21,7 +21,6 @@ from google.api_core import operations_v1 # type: ignore from google.auth import credentials as ga_credentials # type: ignore from google.auth.transport.grpc import SslCredentials # type: ignore -import packaging.version import grpc # type: ignore from grpc.experimental import aio # type: ignore @@ -160,7 +159,7 @@ def __init__( self._grpc_channel = None self._ssl_channel_credentials = ssl_channel_credentials self._stubs: Dict[str, Callable] = {} - self._operations_client = None + self._operations_client: Optional[operations_v1.OperationsAsyncClient] = None if api_mtls_endpoint: warnings.warn("api_mtls_endpoint is deprecated", DeprecationWarning) diff --git a/setup.py b/setup.py index efa88ac..48ff5db 100644 --- a/setup.py +++ b/setup.py @@ -29,9 +29,8 @@ # NOTE: Maintainers, please do not require google-api-core>=2.x.x # Until this issue is closed # https://github.com/googleapis/google-cloud-python/issues/10566 - "google-api-core[grpc] >= 1.26.0, <3.0.0dev", + "google-api-core[grpc] >= 1.28.0, <3.0.0dev", "proto-plus >= 1.15.0", - "packaging >= 14.3", ] package_root = os.path.abspath(os.path.dirname(__file__)) diff --git a/testing/constraints-3.6.txt b/testing/constraints-3.6.txt index fe11de2..1e3ec8b 100644 --- a/testing/constraints-3.6.txt +++ b/testing/constraints-3.6.txt @@ -4,7 +4,5 @@ # Pin the version to the lower bound. # e.g., if setup.py has "google-cloud-foo >= 1.14.0, < 2.0.0dev", # Then this file should have google-cloud-foo==1.14.0 -google-api-core==1.26.0 +google-api-core==1.28.0 proto-plus==1.15.0 -packaging==14.3 -google-auth==1.24.0 # TODO: remove when google-auth>=1.25.0 si transitively required through google-api-core \ No newline at end of file diff --git a/tests/unit/gapic/tpu_v1/test_tpu.py b/tests/unit/gapic/tpu_v1/test_tpu.py index 15e542a..ff44eff 100644 --- a/tests/unit/gapic/tpu_v1/test_tpu.py +++ b/tests/unit/gapic/tpu_v1/test_tpu.py @@ -15,7 +15,6 @@ # import os import mock -import packaging.version import grpc from grpc.experimental import aio @@ -39,7 +38,6 @@ from google.cloud.tpu_v1.services.tpu import TpuClient from google.cloud.tpu_v1.services.tpu import pagers from google.cloud.tpu_v1.services.tpu import transports -from google.cloud.tpu_v1.services.tpu.transports.base import _GOOGLE_AUTH_VERSION from google.cloud.tpu_v1.types import cloud_tpu from google.longrunning import operations_pb2 from google.oauth2 import service_account @@ -47,20 +45,6 @@ import google.auth -# TODO(busunkim): Once google-auth >= 1.25.0 is required transitively -# through google-api-core: -# - Delete the auth "less than" test cases -# - Delete these pytest markers (Make the "greater than or equal to" tests the default). -requires_google_auth_lt_1_25_0 = pytest.mark.skipif( - packaging.version.parse(_GOOGLE_AUTH_VERSION) >= packaging.version.parse("1.25.0"), - reason="This test requires google-auth < 1.25.0", -) -requires_google_auth_gte_1_25_0 = pytest.mark.skipif( - packaging.version.parse(_GOOGLE_AUTH_VERSION) < packaging.version.parse("1.25.0"), - reason="This test requires google-auth >= 1.25.0", -) - - def client_cert_source_callback(): return b"cert bytes", b"key bytes" @@ -190,7 +174,7 @@ def test_tpu_client_client_options(client_class, transport_class, transport_name options = client_options.ClientOptions(api_endpoint="squid.clam.whelk") with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class(client_options=options) + client = client_class(transport=transport_name, client_options=options) patched.assert_called_once_with( credentials=None, credentials_file=None, @@ -207,7 +191,7 @@ def test_tpu_client_client_options(client_class, transport_class, transport_name with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "never"}): with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class() + client = client_class(transport=transport_name) patched.assert_called_once_with( credentials=None, credentials_file=None, @@ -224,7 +208,7 @@ def test_tpu_client_client_options(client_class, transport_class, transport_name with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "always"}): with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class() + client = client_class(transport=transport_name) patched.assert_called_once_with( credentials=None, credentials_file=None, @@ -253,7 +237,7 @@ def test_tpu_client_client_options(client_class, transport_class, transport_name options = client_options.ClientOptions(quota_project_id="octopus") with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class(client_options=options) + client = client_class(transport=transport_name, client_options=options) patched.assert_called_once_with( credentials=None, credentials_file=None, @@ -296,7 +280,7 @@ def test_tpu_client_mtls_env_auto( ) with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class(client_options=options) + client = client_class(transport=transport_name, client_options=options) if use_client_cert_env == "false": expected_client_cert_source = None @@ -338,7 +322,7 @@ def test_tpu_client_mtls_env_auto( expected_client_cert_source = client_cert_source_callback patched.return_value = None - client = client_class() + client = client_class(transport=transport_name) patched.assert_called_once_with( credentials=None, credentials_file=None, @@ -360,7 +344,7 @@ def test_tpu_client_mtls_env_auto( return_value=False, ): patched.return_value = None - client = client_class() + client = client_class(transport=transport_name) patched.assert_called_once_with( credentials=None, credentials_file=None, @@ -387,7 +371,7 @@ def test_tpu_client_client_options_scopes( options = client_options.ClientOptions(scopes=["1", "2"],) with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class(client_options=options) + client = client_class(transport=transport_name, client_options=options) patched.assert_called_once_with( credentials=None, credentials_file=None, @@ -414,7 +398,7 @@ def test_tpu_client_client_options_credentials_file( options = client_options.ClientOptions(credentials_file="credentials.json") with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class(client_options=options) + client = client_class(transport=transport_name, client_options=options) patched.assert_called_once_with( credentials=None, credentials_file="credentials.json", @@ -3110,7 +3094,6 @@ def test_tpu_base_transport(): transport.operations_client -@requires_google_auth_gte_1_25_0 def test_tpu_base_transport_with_credentials_file(): # Instantiate the base transport with a credentials file with mock.patch.object( @@ -3131,26 +3114,6 @@ def test_tpu_base_transport_with_credentials_file(): ) -@requires_google_auth_lt_1_25_0 -def test_tpu_base_transport_with_credentials_file_old_google_auth(): - # Instantiate the base transport with a credentials file - with mock.patch.object( - google.auth, "load_credentials_from_file", autospec=True - ) as load_creds, mock.patch( - "google.cloud.tpu_v1.services.tpu.transports.TpuTransport._prep_wrapped_messages" - ) as Transport: - Transport.return_value = None - load_creds.return_value = (ga_credentials.AnonymousCredentials(), None) - transport = transports.TpuTransport( - credentials_file="credentials.json", quota_project_id="octopus", - ) - load_creds.assert_called_once_with( - "credentials.json", - scopes=("https://www.googleapis.com/auth/cloud-platform",), - quota_project_id="octopus", - ) - - def test_tpu_base_transport_with_adc(): # Test the default credentials are used if credentials and credentials_file are None. with mock.patch.object(google.auth, "default", autospec=True) as adc, mock.patch( @@ -3162,7 +3125,6 @@ def test_tpu_base_transport_with_adc(): adc.assert_called_once() -@requires_google_auth_gte_1_25_0 def test_tpu_auth_adc(): # If no credentials are provided, we should use ADC credentials. with mock.patch.object(google.auth, "default", autospec=True) as adc: @@ -3175,23 +3137,10 @@ def test_tpu_auth_adc(): ) -@requires_google_auth_lt_1_25_0 -def test_tpu_auth_adc_old_google_auth(): - # If no credentials are provided, we should use ADC credentials. - with mock.patch.object(google.auth, "default", autospec=True) as adc: - adc.return_value = (ga_credentials.AnonymousCredentials(), None) - TpuClient() - adc.assert_called_once_with( - scopes=("https://www.googleapis.com/auth/cloud-platform",), - quota_project_id=None, - ) - - @pytest.mark.parametrize( "transport_class", [transports.TpuGrpcTransport, transports.TpuGrpcAsyncIOTransport,], ) -@requires_google_auth_gte_1_25_0 def test_tpu_transport_auth_adc(transport_class): # If credentials and host are not provided, the transport class should use # ADC credentials. @@ -3205,23 +3154,6 @@ def test_tpu_transport_auth_adc(transport_class): ) -@pytest.mark.parametrize( - "transport_class", - [transports.TpuGrpcTransport, transports.TpuGrpcAsyncIOTransport,], -) -@requires_google_auth_lt_1_25_0 -def test_tpu_transport_auth_adc_old_google_auth(transport_class): - # If credentials and host are not provided, the transport class should use - # ADC credentials. - with mock.patch.object(google.auth, "default", autospec=True) as adc: - adc.return_value = (ga_credentials.AnonymousCredentials(), None) - transport_class(quota_project_id="octopus") - adc.assert_called_once_with( - scopes=("https://www.googleapis.com/auth/cloud-platform",), - quota_project_id="octopus", - ) - - @pytest.mark.parametrize( "transport_class,grpc_helpers", [ diff --git a/tests/unit/gapic/tpu_v2alpha1/test_tpu.py b/tests/unit/gapic/tpu_v2alpha1/test_tpu.py index d6f8b7b..702397e 100644 --- a/tests/unit/gapic/tpu_v2alpha1/test_tpu.py +++ b/tests/unit/gapic/tpu_v2alpha1/test_tpu.py @@ -15,7 +15,6 @@ # import os import mock -import packaging.version import grpc from grpc.experimental import aio @@ -39,7 +38,6 @@ from google.cloud.tpu_v2alpha1.services.tpu import TpuClient from google.cloud.tpu_v2alpha1.services.tpu import pagers from google.cloud.tpu_v2alpha1.services.tpu import transports -from google.cloud.tpu_v2alpha1.services.tpu.transports.base import _GOOGLE_AUTH_VERSION from google.cloud.tpu_v2alpha1.types import cloud_tpu from google.longrunning import operations_pb2 from google.oauth2 import service_account @@ -48,20 +46,6 @@ import google.auth -# TODO(busunkim): Once google-auth >= 1.25.0 is required transitively -# through google-api-core: -# - Delete the auth "less than" test cases -# - Delete these pytest markers (Make the "greater than or equal to" tests the default). -requires_google_auth_lt_1_25_0 = pytest.mark.skipif( - packaging.version.parse(_GOOGLE_AUTH_VERSION) >= packaging.version.parse("1.25.0"), - reason="This test requires google-auth < 1.25.0", -) -requires_google_auth_gte_1_25_0 = pytest.mark.skipif( - packaging.version.parse(_GOOGLE_AUTH_VERSION) < packaging.version.parse("1.25.0"), - reason="This test requires google-auth >= 1.25.0", -) - - def client_cert_source_callback(): return b"cert bytes", b"key bytes" @@ -191,7 +175,7 @@ def test_tpu_client_client_options(client_class, transport_class, transport_name options = client_options.ClientOptions(api_endpoint="squid.clam.whelk") with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class(client_options=options) + client = client_class(transport=transport_name, client_options=options) patched.assert_called_once_with( credentials=None, credentials_file=None, @@ -208,7 +192,7 @@ def test_tpu_client_client_options(client_class, transport_class, transport_name with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "never"}): with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class() + client = client_class(transport=transport_name) patched.assert_called_once_with( credentials=None, credentials_file=None, @@ -225,7 +209,7 @@ def test_tpu_client_client_options(client_class, transport_class, transport_name with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "always"}): with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class() + client = client_class(transport=transport_name) patched.assert_called_once_with( credentials=None, credentials_file=None, @@ -254,7 +238,7 @@ def test_tpu_client_client_options(client_class, transport_class, transport_name options = client_options.ClientOptions(quota_project_id="octopus") with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class(client_options=options) + client = client_class(transport=transport_name, client_options=options) patched.assert_called_once_with( credentials=None, credentials_file=None, @@ -297,7 +281,7 @@ def test_tpu_client_mtls_env_auto( ) with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class(client_options=options) + client = client_class(transport=transport_name, client_options=options) if use_client_cert_env == "false": expected_client_cert_source = None @@ -339,7 +323,7 @@ def test_tpu_client_mtls_env_auto( expected_client_cert_source = client_cert_source_callback patched.return_value = None - client = client_class() + client = client_class(transport=transport_name) patched.assert_called_once_with( credentials=None, credentials_file=None, @@ -361,7 +345,7 @@ def test_tpu_client_mtls_env_auto( return_value=False, ): patched.return_value = None - client = client_class() + client = client_class(transport=transport_name) patched.assert_called_once_with( credentials=None, credentials_file=None, @@ -388,7 +372,7 @@ def test_tpu_client_client_options_scopes( options = client_options.ClientOptions(scopes=["1", "2"],) with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class(client_options=options) + client = client_class(transport=transport_name, client_options=options) patched.assert_called_once_with( credentials=None, credentials_file=None, @@ -415,7 +399,7 @@ def test_tpu_client_client_options_credentials_file( options = client_options.ClientOptions(credentials_file="credentials.json") with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class(client_options=options) + client = client_class(transport=transport_name, client_options=options) patched.assert_called_once_with( credentials=None, credentials_file="credentials.json", @@ -3451,7 +3435,6 @@ def test_tpu_base_transport(): transport.operations_client -@requires_google_auth_gte_1_25_0 def test_tpu_base_transport_with_credentials_file(): # Instantiate the base transport with a credentials file with mock.patch.object( @@ -3472,26 +3455,6 @@ def test_tpu_base_transport_with_credentials_file(): ) -@requires_google_auth_lt_1_25_0 -def test_tpu_base_transport_with_credentials_file_old_google_auth(): - # Instantiate the base transport with a credentials file - with mock.patch.object( - google.auth, "load_credentials_from_file", autospec=True - ) as load_creds, mock.patch( - "google.cloud.tpu_v2alpha1.services.tpu.transports.TpuTransport._prep_wrapped_messages" - ) as Transport: - Transport.return_value = None - load_creds.return_value = (ga_credentials.AnonymousCredentials(), None) - transport = transports.TpuTransport( - credentials_file="credentials.json", quota_project_id="octopus", - ) - load_creds.assert_called_once_with( - "credentials.json", - scopes=("https://www.googleapis.com/auth/cloud-platform",), - quota_project_id="octopus", - ) - - def test_tpu_base_transport_with_adc(): # Test the default credentials are used if credentials and credentials_file are None. with mock.patch.object(google.auth, "default", autospec=True) as adc, mock.patch( @@ -3503,7 +3466,6 @@ def test_tpu_base_transport_with_adc(): adc.assert_called_once() -@requires_google_auth_gte_1_25_0 def test_tpu_auth_adc(): # If no credentials are provided, we should use ADC credentials. with mock.patch.object(google.auth, "default", autospec=True) as adc: @@ -3516,23 +3478,10 @@ def test_tpu_auth_adc(): ) -@requires_google_auth_lt_1_25_0 -def test_tpu_auth_adc_old_google_auth(): - # If no credentials are provided, we should use ADC credentials. - with mock.patch.object(google.auth, "default", autospec=True) as adc: - adc.return_value = (ga_credentials.AnonymousCredentials(), None) - TpuClient() - adc.assert_called_once_with( - scopes=("https://www.googleapis.com/auth/cloud-platform",), - quota_project_id=None, - ) - - @pytest.mark.parametrize( "transport_class", [transports.TpuGrpcTransport, transports.TpuGrpcAsyncIOTransport,], ) -@requires_google_auth_gte_1_25_0 def test_tpu_transport_auth_adc(transport_class): # If credentials and host are not provided, the transport class should use # ADC credentials. @@ -3546,23 +3495,6 @@ def test_tpu_transport_auth_adc(transport_class): ) -@pytest.mark.parametrize( - "transport_class", - [transports.TpuGrpcTransport, transports.TpuGrpcAsyncIOTransport,], -) -@requires_google_auth_lt_1_25_0 -def test_tpu_transport_auth_adc_old_google_auth(transport_class): - # If credentials and host are not provided, the transport class should use - # ADC credentials. - with mock.patch.object(google.auth, "default", autospec=True) as adc: - adc.return_value = (ga_credentials.AnonymousCredentials(), None) - transport_class(quota_project_id="octopus") - adc.assert_called_once_with( - scopes=("https://www.googleapis.com/auth/cloud-platform",), - quota_project_id="octopus", - ) - - @pytest.mark.parametrize( "transport_class,grpc_helpers", [