From 7750cb35928891a955f89ead48c58d5af6b4e2b6 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Mon, 1 Nov 2021 10:58:14 +0000 Subject: [PATCH] chore: use gapic-generator-python 0.53.4 (#110) - [ ] Regenerate this pull request now. docs: list oneofs in docstring fix(deps): require google-api-core >= 1.28.0 fix(deps): drop packaging dependency committer: busunkim96@ PiperOrigin-RevId: 406468269 Source-Link: https://github.com/googleapis/googleapis/commit/83d81b0c8fc22291a13398d6d77f02dc97a5b6f4 Source-Link: https://github.com/googleapis/googleapis-gen/commit/2ff001fbacb9e77e71d734de5f955c05fdae8526 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMmZmMDAxZmJhY2I5ZTc3ZTcxZDczNGRlNWY5NTVjMDVmZGFlODUyNiJ9 --- .../managed_notebook_service/async_client.py | 58 ++--- .../managed_notebook_service/client.py | 20 +- .../transports/base.py | 37 +-- .../transports/grpc.py | 2 +- .../transports/grpc_asyncio.py | 3 +- .../services/notebook_service/async_client.py | 196 ++++++++-------- .../services/notebook_service/client.py | 66 +++--- .../notebook_service/transports/base.py | 37 +-- .../notebook_service/transports/grpc.py | 2 +- .../transports/grpc_asyncio.py | 3 +- .../cloud/notebooks_v1/types/environment.py | 18 ++ google/cloud/notebooks_v1/types/execution.py | 3 + google/cloud/notebooks_v1/types/instance.py | 9 + google/cloud/notebooks_v1/types/runtime.py | 5 + .../services/notebook_service/async_client.py | 118 +++++----- .../services/notebook_service/client.py | 40 ++-- .../notebook_service/transports/base.py | 37 +-- .../notebook_service/transports/grpc.py | 2 +- .../transports/grpc_asyncio.py | 3 +- .../notebooks_v1beta1/types/environment.py | 18 ++ .../cloud/notebooks_v1beta1/types/instance.py | 9 + scripts/fixup_notebooks_v1_keywords.py | 216 ++++++++++++++++++ scripts/fixup_notebooks_v1beta1_keywords.py | 46 ++-- setup.py | 3 +- testing/constraints-3.6.txt | 6 +- .../test_managed_notebook_service.py | 91 +------- .../notebooks_v1/test_notebook_service.py | 91 +------- .../test_notebook_service.py | 91 +------- 28 files changed, 596 insertions(+), 634 deletions(-) create mode 100644 scripts/fixup_notebooks_v1_keywords.py diff --git a/google/cloud/notebooks_v1/services/managed_notebook_service/async_client.py b/google/cloud/notebooks_v1/services/managed_notebook_service/async_client.py index 80ca851..513bebc 100644 --- a/google/cloud/notebooks_v1/services/managed_notebook_service/async_client.py +++ b/google/cloud/notebooks_v1/services/managed_notebook_service/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.notebooks_v1.services.managed_notebook_service import pagers @@ -173,17 +175,17 @@ def __init__( async def list_runtimes( self, - request: managed_service.ListRuntimesRequest = None, + request: Union[managed_service.ListRuntimesRequest, 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.ListRuntimesAsyncPager: r"""Lists Runtimes in a given project and location. Args: - request (:class:`google.cloud.notebooks_v1.types.ListRuntimesRequest`): + request (Union[google.cloud.notebooks_v1.types.ListRuntimesRequest, dict]): The request object. Request for listing Managed Notebook Runtimes. parent (:class:`str`): @@ -253,10 +255,10 @@ async def list_runtimes( async def get_runtime( self, - request: managed_service.GetRuntimeRequest = None, + request: Union[managed_service.GetRuntimeRequest, 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]] = (), ) -> runtime.Runtime: @@ -264,7 +266,7 @@ async def get_runtime( be a regional endpoint rather than zonal. Args: - request (:class:`google.cloud.notebooks_v1.types.GetRuntimeRequest`): + request (Union[google.cloud.notebooks_v1.types.GetRuntimeRequest, dict]): The request object. Request for getting a Managed Notebook Runtime. name (:class:`str`): @@ -325,12 +327,12 @@ async def get_runtime( async def create_runtime( self, - request: managed_service.CreateRuntimeRequest = None, + request: Union[managed_service.CreateRuntimeRequest, dict] = None, *, parent: str = None, runtime_id: str = None, runtime: gcn_runtime.Runtime = 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: @@ -338,7 +340,7 @@ async def create_runtime( location. Args: - request (:class:`google.cloud.notebooks_v1.types.CreateRuntimeRequest`): + request (Union[google.cloud.notebooks_v1.types.CreateRuntimeRequest, dict]): The request object. Request for creating a Managed Notebook Runtime. parent (:class:`str`): @@ -426,17 +428,17 @@ async def create_runtime( async def delete_runtime( self, - request: managed_service.DeleteRuntimeRequest = None, + request: Union[managed_service.DeleteRuntimeRequest, 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 single Runtime. Args: - request (:class:`google.cloud.notebooks_v1.types.DeleteRuntimeRequest`): + request (Union[google.cloud.notebooks_v1.types.DeleteRuntimeRequest, dict]): The request object. Request for deleting a Managed Notebook Runtime. name (:class:`str`): @@ -518,10 +520,10 @@ async def delete_runtime( async def start_runtime( self, - request: managed_service.StartRuntimeRequest = None, + request: Union[managed_service.StartRuntimeRequest, 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: @@ -534,7 +536,7 @@ async def start_runtime( resume-instance Args: - request (:class:`google.cloud.notebooks_v1.types.StartRuntimeRequest`): + request (Union[google.cloud.notebooks_v1.types.StartRuntimeRequest, dict]): The request object. Request for starting a Managed Notebook Runtime. name (:class:`str`): @@ -606,10 +608,10 @@ async def start_runtime( async def stop_runtime( self, - request: managed_service.StopRuntimeRequest = None, + request: Union[managed_service.StopRuntimeRequest, 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: @@ -622,7 +624,7 @@ async def stop_runtime( resume-instance Args: - request (:class:`google.cloud.notebooks_v1.types.StopRuntimeRequest`): + request (Union[google.cloud.notebooks_v1.types.StopRuntimeRequest, dict]): The request object. Request for stopping a Managed Notebook Runtime. name (:class:`str`): @@ -694,17 +696,17 @@ async def stop_runtime( async def switch_runtime( self, - request: managed_service.SwitchRuntimeRequest = None, + request: Union[managed_service.SwitchRuntimeRequest, 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"""Switch a Managed Notebook Runtime. Args: - request (:class:`google.cloud.notebooks_v1.types.SwitchRuntimeRequest`): + request (Union[google.cloud.notebooks_v1.types.SwitchRuntimeRequest, dict]): The request object. Request for switching a Managed Notebook Runtime. name (:class:`str`): @@ -776,17 +778,17 @@ async def switch_runtime( async def reset_runtime( self, - request: managed_service.ResetRuntimeRequest = None, + request: Union[managed_service.ResetRuntimeRequest, 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"""Resets a Managed Notebook Runtime. Args: - request (:class:`google.cloud.notebooks_v1.types.ResetRuntimeRequest`): + request (Union[google.cloud.notebooks_v1.types.ResetRuntimeRequest, dict]): The request object. Request for reseting a Managed Notebook Runtime. name (:class:`str`): @@ -858,17 +860,17 @@ async def reset_runtime( async def report_runtime_event( self, - request: managed_service.ReportRuntimeEventRequest = None, + request: Union[managed_service.ReportRuntimeEventRequest, 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"""Report and process a runtime event. Args: - request (:class:`google.cloud.notebooks_v1.types.ReportRuntimeEventRequest`): + request (Union[google.cloud.notebooks_v1.types.ReportRuntimeEventRequest, dict]): The request object. Request for reporting a Managed Notebook Event. name (:class:`str`): diff --git a/google/cloud/notebooks_v1/services/managed_notebook_service/client.py b/google/cloud/notebooks_v1/services/managed_notebook_service/client.py index 8384122..f91481b 100644 --- a/google/cloud/notebooks_v1/services/managed_notebook_service/client.py +++ b/google/cloud/notebooks_v1/services/managed_notebook_service/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.notebooks_v1.services.managed_notebook_service import pagers @@ -361,7 +363,7 @@ def list_runtimes( request: Union[managed_service.ListRuntimesRequest, 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.ListRuntimesPager: @@ -441,7 +443,7 @@ def get_runtime( request: Union[managed_service.GetRuntimeRequest, 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]] = (), ) -> runtime.Runtime: @@ -515,7 +517,7 @@ def create_runtime( parent: str = None, runtime_id: str = None, runtime: gcn_runtime.Runtime = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -614,7 +616,7 @@ def delete_runtime( request: Union[managed_service.DeleteRuntimeRequest, 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: @@ -706,7 +708,7 @@ def start_runtime( request: Union[managed_service.StartRuntimeRequest, 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: @@ -794,7 +796,7 @@ def stop_runtime( request: Union[managed_service.StopRuntimeRequest, 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: @@ -882,7 +884,7 @@ def switch_runtime( request: Union[managed_service.SwitchRuntimeRequest, 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: @@ -964,7 +966,7 @@ def reset_runtime( request: Union[managed_service.ResetRuntimeRequest, 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: @@ -1046,7 +1048,7 @@ def report_runtime_event( request: Union[managed_service.ReportRuntimeEventRequest, 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: diff --git a/google/cloud/notebooks_v1/services/managed_notebook_service/transports/base.py b/google/cloud/notebooks_v1/services/managed_notebook_service/transports/base.py index 60f8d2f..54f643b 100644 --- a/google/cloud/notebooks_v1/services/managed_notebook_service/transports/base.py +++ b/google/cloud/notebooks_v1/services/managed_notebook_service/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 @@ -38,15 +37,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 ManagedNotebookServiceTransport(abc.ABC): """Abstract transport class for ManagedNotebookService.""" @@ -96,7 +86,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 @@ -129,29 +119,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 = { @@ -196,7 +163,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/notebooks_v1/services/managed_notebook_service/transports/grpc.py b/google/cloud/notebooks_v1/services/managed_notebook_service/transports/grpc.py index a9f6ffc..5de37ef 100644 --- a/google/cloud/notebooks_v1/services/managed_notebook_service/transports/grpc.py +++ b/google/cloud/notebooks_v1/services/managed_notebook_service/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/notebooks_v1/services/managed_notebook_service/transports/grpc_asyncio.py b/google/cloud/notebooks_v1/services/managed_notebook_service/transports/grpc_asyncio.py index 3aa853e..05a0b85 100644 --- a/google/cloud/notebooks_v1/services/managed_notebook_service/transports/grpc_asyncio.py +++ b/google/cloud/notebooks_v1/services/managed_notebook_service/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/notebooks_v1/services/notebook_service/async_client.py b/google/cloud/notebooks_v1/services/notebook_service/async_client.py index 2b7950e..4400714 100644 --- a/google/cloud/notebooks_v1/services/notebook_service/async_client.py +++ b/google/cloud/notebooks_v1/services/notebook_service/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.notebooks_v1.services.notebook_service import pagers @@ -181,17 +183,17 @@ def __init__( async def list_instances( self, - request: service.ListInstancesRequest = None, + request: Union[service.ListInstancesRequest, 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.ListInstancesAsyncPager: r"""Lists instances in a given project and location. Args: - request (:class:`google.cloud.notebooks_v1.types.ListInstancesRequest`): + request (Union[google.cloud.notebooks_v1.types.ListInstancesRequest, dict]): The request object. Request for listing notebook instances. parent (:class:`str`): @@ -261,17 +263,17 @@ async def list_instances( async def get_instance( self, - request: service.GetInstanceRequest = None, + request: Union[service.GetInstanceRequest, 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]] = (), ) -> instance.Instance: r"""Gets details of a single Instance. Args: - request (:class:`google.cloud.notebooks_v1.types.GetInstanceRequest`): + request (Union[google.cloud.notebooks_v1.types.GetInstanceRequest, dict]): The request object. Request for getting a notebook instance. name (:class:`str`): @@ -332,12 +334,12 @@ async def get_instance( async def create_instance( self, - request: service.CreateInstanceRequest = None, + request: Union[service.CreateInstanceRequest, dict] = None, *, parent: str = None, instance: gcn_instance.Instance = None, instance_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: @@ -345,7 +347,7 @@ async def create_instance( location. Args: - request (:class:`google.cloud.notebooks_v1.types.CreateInstanceRequest`): + request (Union[google.cloud.notebooks_v1.types.CreateInstanceRequest, dict]): The request object. Request for creating a notebook instance. parent (:class:`str`): @@ -433,9 +435,9 @@ async def create_instance( async def register_instance( self, - request: service.RegisterInstanceRequest = None, + request: Union[service.RegisterInstanceRequest, 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: @@ -447,7 +449,7 @@ async def register_instance( API. Args: - request (:class:`google.cloud.notebooks_v1.types.RegisterInstanceRequest`): + request (Union[google.cloud.notebooks_v1.types.RegisterInstanceRequest, dict]): The request object. Request for registering a notebook instance. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -498,16 +500,16 @@ async def register_instance( async def set_instance_accelerator( self, - request: service.SetInstanceAcceleratorRequest = None, + request: Union[service.SetInstanceAcceleratorRequest, 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"""Updates the guest accelerators of a single Instance. Args: - request (:class:`google.cloud.notebooks_v1.types.SetInstanceAcceleratorRequest`): + request (Union[google.cloud.notebooks_v1.types.SetInstanceAcceleratorRequest, dict]): The request object. Request for setting instance accelerator. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -558,16 +560,16 @@ async def set_instance_accelerator( async def set_instance_machine_type( self, - request: service.SetInstanceMachineTypeRequest = None, + request: Union[service.SetInstanceMachineTypeRequest, 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"""Updates the machine type of a single Instance. Args: - request (:class:`google.cloud.notebooks_v1.types.SetInstanceMachineTypeRequest`): + request (Union[google.cloud.notebooks_v1.types.SetInstanceMachineTypeRequest, dict]): The request object. Request for setting instance machine type. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -618,16 +620,16 @@ async def set_instance_machine_type( async def update_instance_config( self, - request: service.UpdateInstanceConfigRequest = None, + request: Union[service.UpdateInstanceConfigRequest, 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"""Update Notebook Instance configurations. Args: - request (:class:`google.cloud.notebooks_v1.types.UpdateInstanceConfigRequest`): + request (Union[google.cloud.notebooks_v1.types.UpdateInstanceConfigRequest, dict]): The request object. Request for updating instance configurations. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -678,9 +680,9 @@ async def update_instance_config( async def update_shielded_instance_config( self, - request: service.UpdateShieldedInstanceConfigRequest = None, + request: Union[service.UpdateShieldedInstanceConfigRequest, 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: @@ -688,7 +690,7 @@ async def update_shielded_instance_config( single Instance. Args: - request (:class:`google.cloud.notebooks_v1.types.UpdateShieldedInstanceConfigRequest`): + request (Union[google.cloud.notebooks_v1.types.UpdateShieldedInstanceConfigRequest, dict]): The request object. Request for updating the Shielded Instance config for a notebook instance. You can only use this method on a stopped instance @@ -740,16 +742,16 @@ async def update_shielded_instance_config( async def set_instance_labels( self, - request: service.SetInstanceLabelsRequest = None, + request: Union[service.SetInstanceLabelsRequest, 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"""Replaces all the labels of an Instance. Args: - request (:class:`google.cloud.notebooks_v1.types.SetInstanceLabelsRequest`): + request (Union[google.cloud.notebooks_v1.types.SetInstanceLabelsRequest, dict]): The request object. Request for setting instance labels. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. @@ -799,17 +801,17 @@ async def set_instance_labels( async def delete_instance( self, - request: service.DeleteInstanceRequest = None, + request: Union[service.DeleteInstanceRequest, 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 single Instance. Args: - request (:class:`google.cloud.notebooks_v1.types.DeleteInstanceRequest`): + request (Union[google.cloud.notebooks_v1.types.DeleteInstanceRequest, dict]): The request object. Request for deleting a notebook instance. name (:class:`str`): @@ -891,16 +893,16 @@ async def delete_instance( async def start_instance( self, - request: service.StartInstanceRequest = None, + request: Union[service.StartInstanceRequest, 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 notebook instance. Args: - request (:class:`google.cloud.notebooks_v1.types.StartInstanceRequest`): + request (Union[google.cloud.notebooks_v1.types.StartInstanceRequest, dict]): The request object. Request for starting a notebook instance retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -951,16 +953,16 @@ async def start_instance( async def stop_instance( self, - request: service.StopInstanceRequest = None, + request: Union[service.StopInstanceRequest, 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 notebook instance. Args: - request (:class:`google.cloud.notebooks_v1.types.StopInstanceRequest`): + request (Union[google.cloud.notebooks_v1.types.StopInstanceRequest, dict]): The request object. Request for stopping a notebook instance retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -1011,16 +1013,16 @@ async def stop_instance( async def reset_instance( self, - request: service.ResetInstanceRequest = None, + request: Union[service.ResetInstanceRequest, 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"""Resets a notebook instance. Args: - request (:class:`google.cloud.notebooks_v1.types.ResetInstanceRequest`): + request (Union[google.cloud.notebooks_v1.types.ResetInstanceRequest, dict]): The request object. Request for reseting a notebook instance retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -1071,9 +1073,9 @@ async def reset_instance( async def report_instance_info( self, - request: service.ReportInstanceInfoRequest = None, + request: Union[service.ReportInstanceInfoRequest, 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: @@ -1084,7 +1086,7 @@ async def report_instance_info( this method directly. Args: - request (:class:`google.cloud.notebooks_v1.types.ReportInstanceInfoRequest`): + request (Union[google.cloud.notebooks_v1.types.ReportInstanceInfoRequest, dict]): The request object. Request for notebook instances to report information to Notebooks API. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -1135,16 +1137,16 @@ async def report_instance_info( async def is_instance_upgradeable( self, - request: service.IsInstanceUpgradeableRequest = None, + request: Union[service.IsInstanceUpgradeableRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> service.IsInstanceUpgradeableResponse: r"""Check if a notebook instance is upgradable. Args: - request (:class:`google.cloud.notebooks_v1.types.IsInstanceUpgradeableRequest`): + request (Union[google.cloud.notebooks_v1.types.IsInstanceUpgradeableRequest, dict]): The request object. Request for checking if a notebook instance is upgradeable. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -1186,17 +1188,17 @@ async def is_instance_upgradeable( async def get_instance_health( self, - request: service.GetInstanceHealthRequest = None, + request: Union[service.GetInstanceHealthRequest, 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]] = (), ) -> service.GetInstanceHealthResponse: r"""Check if a notebook instance is healthy. Args: - request (:class:`google.cloud.notebooks_v1.types.GetInstanceHealthRequest`): + request (Union[google.cloud.notebooks_v1.types.GetInstanceHealthRequest, dict]): The request object. Request for checking if a notebook instance is healthy. name (:class:`str`): @@ -1257,16 +1259,16 @@ async def get_instance_health( async def upgrade_instance( self, - request: service.UpgradeInstanceRequest = None, + request: Union[service.UpgradeInstanceRequest, 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"""Upgrades a notebook instance to the latest version. Args: - request (:class:`google.cloud.notebooks_v1.types.UpgradeInstanceRequest`): + request (Union[google.cloud.notebooks_v1.types.UpgradeInstanceRequest, dict]): The request object. Request for upgrading a notebook instance retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -1317,9 +1319,9 @@ async def upgrade_instance( async def rollback_instance( self, - request: service.RollbackInstanceRequest = None, + request: Union[service.RollbackInstanceRequest, 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: @@ -1327,7 +1329,7 @@ async def rollback_instance( version. Args: - request (:class:`google.cloud.notebooks_v1.types.RollbackInstanceRequest`): + request (Union[google.cloud.notebooks_v1.types.RollbackInstanceRequest, dict]): The request object. Request for rollbacking a notebook instance retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -1378,9 +1380,9 @@ async def rollback_instance( async def upgrade_instance_internal( self, - request: service.UpgradeInstanceInternalRequest = None, + request: Union[service.UpgradeInstanceInternalRequest, 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: @@ -1389,7 +1391,7 @@ async def upgrade_instance_internal( this method directly. Args: - request (:class:`google.cloud.notebooks_v1.types.UpgradeInstanceInternalRequest`): + request (Union[google.cloud.notebooks_v1.types.UpgradeInstanceInternalRequest, dict]): The request object. Request for upgrading a notebook instance from within the VM retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -1440,17 +1442,17 @@ async def upgrade_instance_internal( async def list_environments( self, - request: service.ListEnvironmentsRequest = None, + request: Union[service.ListEnvironmentsRequest, 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.ListEnvironmentsAsyncPager: r"""Lists environments in a project. Args: - request (:class:`google.cloud.notebooks_v1.types.ListEnvironmentsRequest`): + request (Union[google.cloud.notebooks_v1.types.ListEnvironmentsRequest, dict]): The request object. Request for listing environments. parent (:class:`str`): Required. Format: @@ -1518,17 +1520,17 @@ async def list_environments( async def get_environment( self, - request: service.GetEnvironmentRequest = None, + request: Union[service.GetEnvironmentRequest, 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]] = (), ) -> environment.Environment: r"""Gets details of a single Environment. Args: - request (:class:`google.cloud.notebooks_v1.types.GetEnvironmentRequest`): + request (Union[google.cloud.notebooks_v1.types.GetEnvironmentRequest, dict]): The request object. Request for getting a notebook environment. name (:class:`str`): @@ -1590,19 +1592,19 @@ async def get_environment( async def create_environment( self, - request: service.CreateEnvironmentRequest = None, + request: Union[service.CreateEnvironmentRequest, dict] = None, *, parent: str = None, environment: gcn_environment.Environment = None, environment_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 new Environment. Args: - request (:class:`google.cloud.notebooks_v1.types.CreateEnvironmentRequest`): + request (Union[google.cloud.notebooks_v1.types.CreateEnvironmentRequest, dict]): The request object. Request for creating a notebook environment. parent (:class:`str`): @@ -1694,17 +1696,17 @@ async def create_environment( async def delete_environment( self, - request: service.DeleteEnvironmentRequest = None, + request: Union[service.DeleteEnvironmentRequest, 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 single Environment. Args: - request (:class:`google.cloud.notebooks_v1.types.DeleteEnvironmentRequest`): + request (Union[google.cloud.notebooks_v1.types.DeleteEnvironmentRequest, dict]): The request object. Request for deleting a notebook environment. name (:class:`str`): @@ -1786,17 +1788,17 @@ async def delete_environment( async def list_schedules( self, - request: service.ListSchedulesRequest = None, + request: Union[service.ListSchedulesRequest, 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.ListSchedulesAsyncPager: r"""Lists schedules in a given project and location. Args: - request (:class:`google.cloud.notebooks_v1.types.ListSchedulesRequest`): + request (Union[google.cloud.notebooks_v1.types.ListSchedulesRequest, dict]): The request object. Request for listing scheduled notebook job. parent (:class:`str`): @@ -1866,17 +1868,17 @@ async def list_schedules( async def get_schedule( self, - request: service.GetScheduleRequest = None, + request: Union[service.GetScheduleRequest, 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]] = (), ) -> schedule.Schedule: r"""Gets details of schedule Args: - request (:class:`google.cloud.notebooks_v1.types.GetScheduleRequest`): + request (Union[google.cloud.notebooks_v1.types.GetScheduleRequest, dict]): The request object. Request for getting scheduled notebook. name (:class:`str`): @@ -1935,17 +1937,17 @@ async def get_schedule( async def delete_schedule( self, - request: service.DeleteScheduleRequest = None, + request: Union[service.DeleteScheduleRequest, 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 schedule and all underlying jobs Args: - request (:class:`google.cloud.notebooks_v1.types.DeleteScheduleRequest`): + request (Union[google.cloud.notebooks_v1.types.DeleteScheduleRequest, dict]): The request object. Request for deleting an Schedule name (:class:`str`): Required. Format: @@ -2026,12 +2028,12 @@ async def delete_schedule( async def create_schedule( self, - request: service.CreateScheduleRequest = None, + request: Union[service.CreateScheduleRequest, dict] = None, *, parent: str = None, schedule: gcn_schedule.Schedule = None, schedule_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: @@ -2039,7 +2041,7 @@ async def create_schedule( and location. Args: - request (:class:`google.cloud.notebooks_v1.types.CreateScheduleRequest`): + request (Union[google.cloud.notebooks_v1.types.CreateScheduleRequest, dict]): The request object. Request for created scheduled notebooks parent (:class:`str`): @@ -2127,16 +2129,16 @@ async def create_schedule( async def trigger_schedule( self, - request: service.TriggerScheduleRequest = None, + request: Union[service.TriggerScheduleRequest, 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"""Triggers execution of an existing schedule. Args: - request (:class:`google.cloud.notebooks_v1.types.TriggerScheduleRequest`): + request (Union[google.cloud.notebooks_v1.types.TriggerScheduleRequest, dict]): The request object. Request for created scheduled notebooks retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -2187,17 +2189,17 @@ async def trigger_schedule( async def list_executions( self, - request: service.ListExecutionsRequest = None, + request: Union[service.ListExecutionsRequest, 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.ListExecutionsAsyncPager: r"""Lists executions in a given project and location Args: - request (:class:`google.cloud.notebooks_v1.types.ListExecutionsRequest`): + request (Union[google.cloud.notebooks_v1.types.ListExecutionsRequest, dict]): The request object. Request for listing scheduled notebook executions. parent (:class:`str`): @@ -2267,17 +2269,17 @@ async def list_executions( async def get_execution( self, - request: service.GetExecutionRequest = None, + request: Union[service.GetExecutionRequest, 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]] = (), ) -> execution.Execution: r"""Gets details of executions Args: - request (:class:`google.cloud.notebooks_v1.types.GetExecutionRequest`): + request (Union[google.cloud.notebooks_v1.types.GetExecutionRequest, dict]): The request object. Request for getting scheduled notebook execution name (:class:`str`): @@ -2338,17 +2340,17 @@ async def get_execution( async def delete_execution( self, - request: service.DeleteExecutionRequest = None, + request: Union[service.DeleteExecutionRequest, 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 execution Args: - request (:class:`google.cloud.notebooks_v1.types.DeleteExecutionRequest`): + request (Union[google.cloud.notebooks_v1.types.DeleteExecutionRequest, dict]): The request object. Request for deleting a scheduled notebook execution name (:class:`str`): @@ -2430,12 +2432,12 @@ async def delete_execution( async def create_execution( self, - request: service.CreateExecutionRequest = None, + request: Union[service.CreateExecutionRequest, dict] = None, *, parent: str = None, execution: gcn_execution.Execution = None, execution_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: @@ -2443,7 +2445,7 @@ async def create_execution( and location. Args: - request (:class:`google.cloud.notebooks_v1.types.CreateExecutionRequest`): + request (Union[google.cloud.notebooks_v1.types.CreateExecutionRequest, dict]): The request object. Request to create notebook execution parent (:class:`str`): Required. Format: diff --git a/google/cloud/notebooks_v1/services/notebook_service/client.py b/google/cloud/notebooks_v1/services/notebook_service/client.py index 40fb5eb..422dc1e 100644 --- a/google/cloud/notebooks_v1/services/notebook_service/client.py +++ b/google/cloud/notebooks_v1/services/notebook_service/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.notebooks_v1.services.notebook_service import pagers @@ -408,7 +410,7 @@ def list_instances( request: Union[service.ListInstancesRequest, 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.ListInstancesPager: @@ -488,7 +490,7 @@ def get_instance( request: Union[service.GetInstanceRequest, 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]] = (), ) -> instance.Instance: @@ -561,7 +563,7 @@ def create_instance( parent: str = None, instance: gcn_instance.Instance = None, instance_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: @@ -659,7 +661,7 @@ def register_instance( self, request: Union[service.RegisterInstanceRequest, 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: @@ -725,7 +727,7 @@ def set_instance_accelerator( self, request: Union[service.SetInstanceAcceleratorRequest, 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: @@ -786,7 +788,7 @@ def set_instance_machine_type( self, request: Union[service.SetInstanceMachineTypeRequest, 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: @@ -849,7 +851,7 @@ def update_instance_config( self, request: Union[service.UpdateInstanceConfigRequest, 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: @@ -910,7 +912,7 @@ def update_shielded_instance_config( self, request: Union[service.UpdateShieldedInstanceConfigRequest, 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: @@ -975,7 +977,7 @@ def set_instance_labels( self, request: Union[service.SetInstanceLabelsRequest, 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: @@ -1036,7 +1038,7 @@ def delete_instance( request: Union[service.DeleteInstanceRequest, 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: @@ -1127,7 +1129,7 @@ def start_instance( self, request: Union[service.StartInstanceRequest, 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: @@ -1188,7 +1190,7 @@ def stop_instance( self, request: Union[service.StopInstanceRequest, 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: @@ -1249,7 +1251,7 @@ def reset_instance( self, request: Union[service.ResetInstanceRequest, 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: @@ -1310,7 +1312,7 @@ def report_instance_info( self, request: Union[service.ReportInstanceInfoRequest, 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: @@ -1375,7 +1377,7 @@ def is_instance_upgradeable( self, request: Union[service.IsInstanceUpgradeableRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> service.IsInstanceUpgradeableResponse: @@ -1428,7 +1430,7 @@ def get_instance_health( request: Union[service.GetInstanceHealthRequest, 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]] = (), ) -> service.GetInstanceHealthResponse: @@ -1498,7 +1500,7 @@ def upgrade_instance( self, request: Union[service.UpgradeInstanceRequest, 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: @@ -1559,7 +1561,7 @@ def rollback_instance( self, request: Union[service.RollbackInstanceRequest, 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: @@ -1621,7 +1623,7 @@ def upgrade_instance_internal( self, request: Union[service.UpgradeInstanceInternalRequest, 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: @@ -1687,7 +1689,7 @@ def list_environments( request: Union[service.ListEnvironmentsRequest, 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.ListEnvironmentsPager: @@ -1765,7 +1767,7 @@ def get_environment( request: Union[service.GetEnvironmentRequest, 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]] = (), ) -> environment.Environment: @@ -1839,7 +1841,7 @@ def create_environment( parent: str = None, environment: gcn_environment.Environment = None, environment_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: @@ -1941,7 +1943,7 @@ def delete_environment( request: Union[service.DeleteEnvironmentRequest, 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: @@ -2033,7 +2035,7 @@ def list_schedules( request: Union[service.ListSchedulesRequest, 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.ListSchedulesPager: @@ -2113,7 +2115,7 @@ def get_schedule( request: Union[service.GetScheduleRequest, 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]] = (), ) -> schedule.Schedule: @@ -2182,7 +2184,7 @@ def delete_schedule( request: Union[service.DeleteScheduleRequest, 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: @@ -2275,7 +2277,7 @@ def create_schedule( parent: str = None, schedule: gcn_schedule.Schedule = None, schedule_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: @@ -2373,7 +2375,7 @@ def trigger_schedule( self, request: Union[service.TriggerScheduleRequest, 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: @@ -2435,7 +2437,7 @@ def list_executions( request: Union[service.ListExecutionsRequest, 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.ListExecutionsPager: @@ -2515,7 +2517,7 @@ def get_execution( request: Union[service.GetExecutionRequest, 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]] = (), ) -> execution.Execution: @@ -2586,7 +2588,7 @@ def delete_execution( request: Union[service.DeleteExecutionRequest, 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: @@ -2680,7 +2682,7 @@ def create_execution( parent: str = None, execution: gcn_execution.Execution = None, execution_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: diff --git a/google/cloud/notebooks_v1/services/notebook_service/transports/base.py b/google/cloud/notebooks_v1/services/notebook_service/transports/base.py index 2c0a19e..a3549c6 100644 --- a/google/cloud/notebooks_v1/services/notebook_service/transports/base.py +++ b/google/cloud/notebooks_v1/services/notebook_service/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 @@ -41,15 +40,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 NotebookServiceTransport(abc.ABC): """Abstract transport class for NotebookService.""" @@ -99,7 +89,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 @@ -132,29 +122,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 = { @@ -280,7 +247,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/notebooks_v1/services/notebook_service/transports/grpc.py b/google/cloud/notebooks_v1/services/notebook_service/transports/grpc.py index efb8a86..f22c646 100644 --- a/google/cloud/notebooks_v1/services/notebook_service/transports/grpc.py +++ b/google/cloud/notebooks_v1/services/notebook_service/transports/grpc.py @@ -116,7 +116,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/notebooks_v1/services/notebook_service/transports/grpc_asyncio.py b/google/cloud/notebooks_v1/services/notebook_service/transports/grpc_asyncio.py index 3eba203..c0289de 100644 --- a/google/cloud/notebooks_v1/services/notebook_service/transports/grpc_asyncio.py +++ b/google/cloud/notebooks_v1/services/notebook_service/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 @@ -163,7 +162,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/notebooks_v1/types/environment.py b/google/cloud/notebooks_v1/types/environment.py index 6243552..3360538 100644 --- a/google/cloud/notebooks_v1/types/environment.py +++ b/google/cloud/notebooks_v1/types/environment.py @@ -28,6 +28,13 @@ class Environment(proto.Message): r"""Definition of a software environment that is used to start a notebook instance. + This message has `oneof`_ fields (mutually exclusive fields). + For each oneof, at most one member field can be set at the same time. + Setting any member of the oneof automatically clears all other + members. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + Attributes: name (str): Output only. Name of this environment. Format: @@ -39,9 +46,11 @@ class Environment(proto.Message): vm_image (google.cloud.notebooks_v1.types.VmImage): Use a Compute Engine VM image to start the notebook instance. + This field is a member of `oneof`_ ``image_type``. container_image (google.cloud.notebooks_v1.types.ContainerImage): Use a container image to start the notebook instance. + This field is a member of `oneof`_ ``image_type``. post_startup_script (str): Path to a Bash script that automatically runs after a notebook instance fully boots up. The path must be a URL or @@ -70,15 +79,24 @@ class VmImage(proto.Message): for starting a notebook instance with the environment installed directly on the VM. + This message has `oneof`_ fields (mutually exclusive fields). + For each oneof, at most one member field can be set at the same time. + Setting any member of the oneof automatically clears all other + members. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + Attributes: project (str): Required. The name of the Google Cloud project that this VM image belongs to. Format: ``projects/{project_id}`` image_name (str): Use VM image name to find the image. + This field is a member of `oneof`_ ``image``. image_family (str): Use this VM image family to find the image; the newest image in this family will be used. + This field is a member of `oneof`_ ``image``. """ project = proto.Field(proto.STRING, number=1,) diff --git a/google/cloud/notebooks_v1/types/execution.py b/google/cloud/notebooks_v1/types/execution.py index 56d8eb9..268b1ab 100644 --- a/google/cloud/notebooks_v1/types/execution.py +++ b/google/cloud/notebooks_v1/types/execution.py @@ -26,6 +26,8 @@ class ExecutionTemplate(proto.Message): r"""The description a notebook execution workload. + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + Attributes: scale_tier (google.cloud.notebooks_v1.types.ExecutionTemplate.ScaleTier): Required. Scale tier of the hardware used for @@ -125,6 +127,7 @@ class ExecutionTemplate(proto.Message): dataproc_parameters (google.cloud.notebooks_v1.types.ExecutionTemplate.DataprocParameters): Parameters used in Dataproc JobType executions. + This field is a member of `oneof`_ ``job_parameters``. """ class ScaleTier(proto.Enum): diff --git a/google/cloud/notebooks_v1/types/instance.py b/google/cloud/notebooks_v1/types/instance.py index fc9680f..638c5c3 100644 --- a/google/cloud/notebooks_v1/types/instance.py +++ b/google/cloud/notebooks_v1/types/instance.py @@ -55,6 +55,13 @@ class Type(proto.Enum): class Instance(proto.Message): r"""The definition of a notebook instance. + This message has `oneof`_ fields (mutually exclusive fields). + For each oneof, at most one member field can be set at the same time. + Setting any member of the oneof automatically clears all other + members. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + Attributes: name (str): Output only. The name of this notebook instance. Format: @@ -62,9 +69,11 @@ class Instance(proto.Message): vm_image (google.cloud.notebooks_v1.types.VmImage): Use a Compute Engine VM image to start the notebook instance. + This field is a member of `oneof`_ ``environment``. container_image (google.cloud.notebooks_v1.types.ContainerImage): Use a container image to start the notebook instance. + This field is a member of `oneof`_ ``environment``. post_startup_script (str): Path to a Bash script that automatically runs after a notebook instance fully boots up. The path must be a URL or diff --git a/google/cloud/notebooks_v1/types/runtime.py b/google/cloud/notebooks_v1/types/runtime.py index ef600a6..7f21bc9 100644 --- a/google/cloud/notebooks_v1/types/runtime.py +++ b/google/cloud/notebooks_v1/types/runtime.py @@ -40,6 +40,8 @@ class Runtime(proto.Message): r"""The definition of a Runtime for a managed notebook instance. + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + Attributes: name (str): Output only. The resource name of the runtime. Format: @@ -47,6 +49,7 @@ class Runtime(proto.Message): virtual_machine (google.cloud.notebooks_v1.types.VirtualMachine): Use a Compute Engine VM image to start the managed notebook instance. + This field is a member of `oneof`_ ``runtime_type``. state (google.cloud.notebooks_v1.types.Runtime.State): Output only. Runtime state. health_state (google.cloud.notebooks_v1.types.Runtime.HealthState): @@ -375,9 +378,11 @@ class RuntimeSoftwareConfig(proto.Message): enable_health_monitoring (bool): Verifies core internal services are running. Default: True + This field is a member of `oneof`_ ``_enable_health_monitoring``. idle_shutdown (bool): Runtime will automatically shutdown after idle_shutdown_time. Default: True + This field is a member of `oneof`_ ``_idle_shutdown``. idle_shutdown_timeout (int): Time in minutes to wait before shutting down runtime. Default: 180 minutes diff --git a/google/cloud/notebooks_v1beta1/services/notebook_service/async_client.py b/google/cloud/notebooks_v1beta1/services/notebook_service/async_client.py index 80127fb..3e4b616 100644 --- a/google/cloud/notebooks_v1beta1/services/notebook_service/async_client.py +++ b/google/cloud/notebooks_v1beta1/services/notebook_service/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.notebooks_v1beta1.services.notebook_service import pagers @@ -171,16 +173,16 @@ def __init__( async def list_instances( self, - request: service.ListInstancesRequest = None, + request: Union[service.ListInstancesRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListInstancesAsyncPager: r"""Lists instances in a given project and location. Args: - request (:class:`google.cloud.notebooks_v1beta1.types.ListInstancesRequest`): + request (Union[google.cloud.notebooks_v1beta1.types.ListInstancesRequest, dict]): The request object. Request for listing notebook instances. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -229,16 +231,16 @@ async def list_instances( async def get_instance( self, - request: service.GetInstanceRequest = None, + request: Union[service.GetInstanceRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> instance.Instance: r"""Gets details of a single Instance. Args: - request (:class:`google.cloud.notebooks_v1beta1.types.GetInstanceRequest`): + request (Union[google.cloud.notebooks_v1beta1.types.GetInstanceRequest, dict]): The request object. Request for getting a notebook instance. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -278,9 +280,9 @@ async def get_instance( async def create_instance( self, - request: service.CreateInstanceRequest = None, + request: Union[service.CreateInstanceRequest, 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: @@ -288,7 +290,7 @@ async def create_instance( location. Args: - request (:class:`google.cloud.notebooks_v1beta1.types.CreateInstanceRequest`): + request (Union[google.cloud.notebooks_v1beta1.types.CreateInstanceRequest, dict]): The request object. Request for creating a notebook instance. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -339,9 +341,9 @@ async def create_instance( async def register_instance( self, - request: service.RegisterInstanceRequest = None, + request: Union[service.RegisterInstanceRequest, 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: @@ -353,7 +355,7 @@ async def register_instance( API. Args: - request (:class:`google.cloud.notebooks_v1beta1.types.RegisterInstanceRequest`): + request (Union[google.cloud.notebooks_v1beta1.types.RegisterInstanceRequest, dict]): The request object. Request for registering a notebook instance. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -404,16 +406,16 @@ async def register_instance( async def set_instance_accelerator( self, - request: service.SetInstanceAcceleratorRequest = None, + request: Union[service.SetInstanceAcceleratorRequest, 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"""Updates the guest accelerators of a single Instance. Args: - request (:class:`google.cloud.notebooks_v1beta1.types.SetInstanceAcceleratorRequest`): + request (Union[google.cloud.notebooks_v1beta1.types.SetInstanceAcceleratorRequest, dict]): The request object. Request for setting instance accelerator. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -464,16 +466,16 @@ async def set_instance_accelerator( async def set_instance_machine_type( self, - request: service.SetInstanceMachineTypeRequest = None, + request: Union[service.SetInstanceMachineTypeRequest, 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"""Updates the machine type of a single Instance. Args: - request (:class:`google.cloud.notebooks_v1beta1.types.SetInstanceMachineTypeRequest`): + request (Union[google.cloud.notebooks_v1beta1.types.SetInstanceMachineTypeRequest, dict]): The request object. Request for setting instance machine type. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -524,16 +526,16 @@ async def set_instance_machine_type( async def set_instance_labels( self, - request: service.SetInstanceLabelsRequest = None, + request: Union[service.SetInstanceLabelsRequest, 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"""Updates the labels of an Instance. Args: - request (:class:`google.cloud.notebooks_v1beta1.types.SetInstanceLabelsRequest`): + request (Union[google.cloud.notebooks_v1beta1.types.SetInstanceLabelsRequest, dict]): The request object. Request for setting instance labels. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. @@ -583,16 +585,16 @@ async def set_instance_labels( async def delete_instance( self, - request: service.DeleteInstanceRequest = None, + request: Union[service.DeleteInstanceRequest, 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"""Deletes a single Instance. Args: - request (:class:`google.cloud.notebooks_v1beta1.types.DeleteInstanceRequest`): + request (Union[google.cloud.notebooks_v1beta1.types.DeleteInstanceRequest, dict]): The request object. Request for deleting a notebook instance. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -653,16 +655,16 @@ async def delete_instance( async def start_instance( self, - request: service.StartInstanceRequest = None, + request: Union[service.StartInstanceRequest, 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 notebook instance. Args: - request (:class:`google.cloud.notebooks_v1beta1.types.StartInstanceRequest`): + request (Union[google.cloud.notebooks_v1beta1.types.StartInstanceRequest, dict]): The request object. Request for starting a notebook instance retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -713,16 +715,16 @@ async def start_instance( async def stop_instance( self, - request: service.StopInstanceRequest = None, + request: Union[service.StopInstanceRequest, 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 notebook instance. Args: - request (:class:`google.cloud.notebooks_v1beta1.types.StopInstanceRequest`): + request (Union[google.cloud.notebooks_v1beta1.types.StopInstanceRequest, dict]): The request object. Request for stopping a notebook instance retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -773,16 +775,16 @@ async def stop_instance( async def reset_instance( self, - request: service.ResetInstanceRequest = None, + request: Union[service.ResetInstanceRequest, 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"""Resets a notebook instance. Args: - request (:class:`google.cloud.notebooks_v1beta1.types.ResetInstanceRequest`): + request (Union[google.cloud.notebooks_v1beta1.types.ResetInstanceRequest, dict]): The request object. Request for reseting a notebook instance retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -833,9 +835,9 @@ async def reset_instance( async def report_instance_info( self, - request: service.ReportInstanceInfoRequest = None, + request: Union[service.ReportInstanceInfoRequest, 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: @@ -846,7 +848,7 @@ async def report_instance_info( this method directly. Args: - request (:class:`google.cloud.notebooks_v1beta1.types.ReportInstanceInfoRequest`): + request (Union[google.cloud.notebooks_v1beta1.types.ReportInstanceInfoRequest, dict]): The request object. Request for notebook instances to report information to Notebooks API. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -897,16 +899,16 @@ async def report_instance_info( async def is_instance_upgradeable( self, - request: service.IsInstanceUpgradeableRequest = None, + request: Union[service.IsInstanceUpgradeableRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> service.IsInstanceUpgradeableResponse: r"""Check if a notebook instance is upgradable. Args: - request (:class:`google.cloud.notebooks_v1beta1.types.IsInstanceUpgradeableRequest`): + request (Union[google.cloud.notebooks_v1beta1.types.IsInstanceUpgradeableRequest, dict]): The request object. Request for checking if a notebook instance is upgradeable. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -948,16 +950,16 @@ async def is_instance_upgradeable( async def upgrade_instance( self, - request: service.UpgradeInstanceRequest = None, + request: Union[service.UpgradeInstanceRequest, 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"""Upgrades a notebook instance to the latest version. Args: - request (:class:`google.cloud.notebooks_v1beta1.types.UpgradeInstanceRequest`): + request (Union[google.cloud.notebooks_v1beta1.types.UpgradeInstanceRequest, dict]): The request object. Request for upgrading a notebook instance retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -1008,9 +1010,9 @@ async def upgrade_instance( async def upgrade_instance_internal( self, - request: service.UpgradeInstanceInternalRequest = None, + request: Union[service.UpgradeInstanceInternalRequest, 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: @@ -1019,7 +1021,7 @@ async def upgrade_instance_internal( this method directly. Args: - request (:class:`google.cloud.notebooks_v1beta1.types.UpgradeInstanceInternalRequest`): + request (Union[google.cloud.notebooks_v1beta1.types.UpgradeInstanceInternalRequest, dict]): The request object. Request for upgrading a notebook instance from within the VM retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -1070,16 +1072,16 @@ async def upgrade_instance_internal( async def list_environments( self, - request: service.ListEnvironmentsRequest = None, + request: Union[service.ListEnvironmentsRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListEnvironmentsAsyncPager: r"""Lists environments in a project. Args: - request (:class:`google.cloud.notebooks_v1beta1.types.ListEnvironmentsRequest`): + request (Union[google.cloud.notebooks_v1beta1.types.ListEnvironmentsRequest, dict]): The request object. Request for listing environments. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. @@ -1126,16 +1128,16 @@ async def list_environments( async def get_environment( self, - request: service.GetEnvironmentRequest = None, + request: Union[service.GetEnvironmentRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> environment.Environment: r"""Gets details of a single Environment. Args: - request (:class:`google.cloud.notebooks_v1beta1.types.GetEnvironmentRequest`): + request (Union[google.cloud.notebooks_v1beta1.types.GetEnvironmentRequest, dict]): The request object. Request for getting a notebook environment. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -1176,16 +1178,16 @@ async def get_environment( async def create_environment( self, - request: service.CreateEnvironmentRequest = None, + request: Union[service.CreateEnvironmentRequest, 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"""Creates a new Environment. Args: - request (:class:`google.cloud.notebooks_v1beta1.types.CreateEnvironmentRequest`): + request (Union[google.cloud.notebooks_v1beta1.types.CreateEnvironmentRequest, dict]): The request object. Request for creating a notebook environment. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -1235,16 +1237,16 @@ async def create_environment( async def delete_environment( self, - request: service.DeleteEnvironmentRequest = None, + request: Union[service.DeleteEnvironmentRequest, 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"""Deletes a single Environment. Args: - request (:class:`google.cloud.notebooks_v1beta1.types.DeleteEnvironmentRequest`): + request (Union[google.cloud.notebooks_v1beta1.types.DeleteEnvironmentRequest, dict]): The request object. Request for deleting a notebook environment. retry (google.api_core.retry.Retry): Designation of what errors, if any, diff --git a/google/cloud/notebooks_v1beta1/services/notebook_service/client.py b/google/cloud/notebooks_v1beta1/services/notebook_service/client.py index 9550e37..b29c7f3 100644 --- a/google/cloud/notebooks_v1beta1/services/notebook_service/client.py +++ b/google/cloud/notebooks_v1beta1/services/notebook_service/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.notebooks_v1beta1.services.notebook_service import pagers @@ -369,7 +371,7 @@ def list_instances( self, request: Union[service.ListInstancesRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListInstancesPager: @@ -428,7 +430,7 @@ def get_instance( self, request: Union[service.GetInstanceRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> instance.Instance: @@ -478,7 +480,7 @@ def create_instance( self, request: Union[service.CreateInstanceRequest, 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: @@ -540,7 +542,7 @@ def register_instance( self, request: Union[service.RegisterInstanceRequest, 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: @@ -606,7 +608,7 @@ def set_instance_accelerator( self, request: Union[service.SetInstanceAcceleratorRequest, 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: @@ -667,7 +669,7 @@ def set_instance_machine_type( self, request: Union[service.SetInstanceMachineTypeRequest, 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: @@ -730,7 +732,7 @@ def set_instance_labels( self, request: Union[service.SetInstanceLabelsRequest, 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: @@ -790,7 +792,7 @@ def delete_instance( self, request: Union[service.DeleteInstanceRequest, 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: @@ -861,7 +863,7 @@ def start_instance( self, request: Union[service.StartInstanceRequest, 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: @@ -922,7 +924,7 @@ def stop_instance( self, request: Union[service.StopInstanceRequest, 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: @@ -983,7 +985,7 @@ def reset_instance( self, request: Union[service.ResetInstanceRequest, 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: @@ -1044,7 +1046,7 @@ def report_instance_info( self, request: Union[service.ReportInstanceInfoRequest, 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: @@ -1109,7 +1111,7 @@ def is_instance_upgradeable( self, request: Union[service.IsInstanceUpgradeableRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> service.IsInstanceUpgradeableResponse: @@ -1161,7 +1163,7 @@ def upgrade_instance( self, request: Union[service.UpgradeInstanceRequest, 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: @@ -1222,7 +1224,7 @@ def upgrade_instance_internal( self, request: Union[service.UpgradeInstanceInternalRequest, 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: @@ -1287,7 +1289,7 @@ def list_environments( self, request: Union[service.ListEnvironmentsRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListEnvironmentsPager: @@ -1344,7 +1346,7 @@ def get_environment( self, request: Union[service.GetEnvironmentRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> environment.Environment: @@ -1395,7 +1397,7 @@ def create_environment( self, request: Union[service.CreateEnvironmentRequest, 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: @@ -1455,7 +1457,7 @@ def delete_environment( self, request: Union[service.DeleteEnvironmentRequest, 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: diff --git a/google/cloud/notebooks_v1beta1/services/notebook_service/transports/base.py b/google/cloud/notebooks_v1beta1/services/notebook_service/transports/base.py index 913d62c..67ce8b3 100644 --- a/google/cloud/notebooks_v1beta1/services/notebook_service/transports/base.py +++ b/google/cloud/notebooks_v1beta1/services/notebook_service/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 @@ -39,15 +38,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 NotebookServiceTransport(abc.ABC): """Abstract transport class for NotebookService.""" @@ -97,7 +87,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 @@ -130,29 +120,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 = { @@ -235,7 +202,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/notebooks_v1beta1/services/notebook_service/transports/grpc.py b/google/cloud/notebooks_v1beta1/services/notebook_service/transports/grpc.py index 710767e..bf5cf3b 100644 --- a/google/cloud/notebooks_v1beta1/services/notebook_service/transports/grpc.py +++ b/google/cloud/notebooks_v1beta1/services/notebook_service/transports/grpc.py @@ -114,7 +114,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/notebooks_v1beta1/services/notebook_service/transports/grpc_asyncio.py b/google/cloud/notebooks_v1beta1/services/notebook_service/transports/grpc_asyncio.py index c3956be..7a2a7f0 100644 --- a/google/cloud/notebooks_v1beta1/services/notebook_service/transports/grpc_asyncio.py +++ b/google/cloud/notebooks_v1beta1/services/notebook_service/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 @@ -161,7 +160,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/notebooks_v1beta1/types/environment.py b/google/cloud/notebooks_v1beta1/types/environment.py index 5d2aeac..e24433a 100644 --- a/google/cloud/notebooks_v1beta1/types/environment.py +++ b/google/cloud/notebooks_v1beta1/types/environment.py @@ -28,6 +28,13 @@ class Environment(proto.Message): r"""Definition of a software environment that is used to start a notebook instance. + This message has `oneof`_ fields (mutually exclusive fields). + For each oneof, at most one member field can be set at the same time. + Setting any member of the oneof automatically clears all other + members. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + Attributes: name (str): Output only. Name of this environment. Format: @@ -39,9 +46,11 @@ class Environment(proto.Message): vm_image (google.cloud.notebooks_v1beta1.types.VmImage): Use a Compute Engine VM image to start the notebook instance. + This field is a member of `oneof`_ ``image_type``. container_image (google.cloud.notebooks_v1beta1.types.ContainerImage): Use a container image to start the notebook instance. + This field is a member of `oneof`_ ``image_type``. post_startup_script (str): Path to a Bash script that automatically runs after a notebook instance fully boots up. The path must be a URL or @@ -70,15 +79,24 @@ class VmImage(proto.Message): for starting a notebook instance with the environment installed directly on the VM. + This message has `oneof`_ fields (mutually exclusive fields). + For each oneof, at most one member field can be set at the same time. + Setting any member of the oneof automatically clears all other + members. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + Attributes: project (str): Required. The name of the Google Cloud project that this VM image belongs to. Format: ``projects/{project_id}`` image_name (str): Use VM image name to find the image. + This field is a member of `oneof`_ ``image``. image_family (str): Use this VM image family to find the image; the newest image in this family will be used. + This field is a member of `oneof`_ ``image``. """ project = proto.Field(proto.STRING, number=1,) diff --git a/google/cloud/notebooks_v1beta1/types/instance.py b/google/cloud/notebooks_v1beta1/types/instance.py index 13eb275..10a6220 100644 --- a/google/cloud/notebooks_v1beta1/types/instance.py +++ b/google/cloud/notebooks_v1beta1/types/instance.py @@ -27,6 +27,13 @@ class Instance(proto.Message): r"""The definition of a notebook instance. + This message has `oneof`_ fields (mutually exclusive fields). + For each oneof, at most one member field can be set at the same time. + Setting any member of the oneof automatically clears all other + members. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + Attributes: name (str): Output only. The name of this notebook instance. Format: @@ -34,9 +41,11 @@ class Instance(proto.Message): vm_image (google.cloud.notebooks_v1beta1.types.VmImage): Use a Compute Engine VM image to start the notebook instance. + This field is a member of `oneof`_ ``environment``. container_image (google.cloud.notebooks_v1beta1.types.ContainerImage): Use a container image to start the notebook instance. + This field is a member of `oneof`_ ``environment``. post_startup_script (str): Path to a Bash script that automatically runs after a notebook instance fully boots up. The path must be a URL or diff --git a/scripts/fixup_notebooks_v1_keywords.py b/scripts/fixup_notebooks_v1_keywords.py new file mode 100644 index 0000000..6493c38 --- /dev/null +++ b/scripts/fixup_notebooks_v1_keywords.py @@ -0,0 +1,216 @@ +#! /usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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 argparse +import os +import libcst as cst +import pathlib +import sys +from typing import (Any, Callable, Dict, List, Sequence, Tuple) + + +def partition( + predicate: Callable[[Any], bool], + iterator: Sequence[Any] +) -> Tuple[List[Any], List[Any]]: + """A stable, out-of-place partition.""" + results = ([], []) + + for i in iterator: + results[int(predicate(i))].append(i) + + # Returns trueList, falseList + return results[1], results[0] + + +class notebooksCallTransformer(cst.CSTTransformer): + CTRL_PARAMS: Tuple[str] = ('retry', 'timeout', 'metadata') + METHOD_TO_PARAMS: Dict[str, Tuple[str]] = { + 'create_environment': ('parent', 'environment_id', 'environment', ), + 'create_execution': ('parent', 'execution_id', 'execution', ), + 'create_instance': ('parent', 'instance_id', 'instance', ), + 'create_runtime': ('parent', 'runtime_id', 'runtime', ), + 'create_schedule': ('parent', 'schedule_id', 'schedule', ), + 'delete_environment': ('name', ), + 'delete_execution': ('name', ), + 'delete_instance': ('name', ), + 'delete_runtime': ('name', ), + 'delete_schedule': ('name', ), + 'get_environment': ('name', ), + 'get_execution': ('name', ), + 'get_instance': ('name', ), + 'get_instance_health': ('name', ), + 'get_runtime': ('name', ), + 'get_schedule': ('name', ), + 'is_instance_upgradeable': ('notebook_instance', ), + 'list_environments': ('parent', 'page_size', 'page_token', ), + 'list_executions': ('parent', 'page_size', 'page_token', 'filter', 'order_by', ), + 'list_instances': ('parent', 'page_size', 'page_token', ), + 'list_runtimes': ('parent', 'page_size', 'page_token', ), + 'list_schedules': ('parent', 'page_size', 'page_token', 'filter', 'order_by', ), + 'register_instance': ('parent', 'instance_id', ), + 'report_instance_info': ('name', 'vm_id', 'metadata', ), + 'report_runtime_event': ('name', 'vm_id', 'event', ), + 'reset_instance': ('name', ), + 'reset_runtime': ('name', ), + 'rollback_instance': ('name', 'target_snapshot', ), + 'set_instance_accelerator': ('name', 'type_', 'core_count', ), + 'set_instance_labels': ('name', 'labels', ), + 'set_instance_machine_type': ('name', 'machine_type', ), + 'start_instance': ('name', ), + 'start_runtime': ('name', ), + 'stop_instance': ('name', ), + 'stop_runtime': ('name', ), + 'switch_runtime': ('name', 'machine_type', 'accelerator_config', ), + 'trigger_schedule': ('name', ), + 'update_instance_config': ('name', 'config', ), + 'update_shielded_instance_config': ('name', 'shielded_instance_config', ), + 'upgrade_instance': ('name', ), + 'upgrade_instance_internal': ('name', 'vm_id', ), + } + + def leave_Call(self, original: cst.Call, updated: cst.Call) -> cst.CSTNode: + try: + key = original.func.attr.value + kword_params = self.METHOD_TO_PARAMS[key] + except (AttributeError, KeyError): + # Either not a method from the API or too convoluted to be sure. + return updated + + # If the existing code is valid, keyword args come after positional args. + # Therefore, all positional args must map to the first parameters. + args, kwargs = partition(lambda a: not bool(a.keyword), updated.args) + if any(k.keyword.value == "request" for k in kwargs): + # We've already fixed this file, don't fix it again. + return updated + + kwargs, ctrl_kwargs = partition( + lambda a: a.keyword.value not in self.CTRL_PARAMS, + kwargs + ) + + args, ctrl_args = args[:len(kword_params)], args[len(kword_params):] + ctrl_kwargs.extend(cst.Arg(value=a.value, keyword=cst.Name(value=ctrl)) + for a, ctrl in zip(ctrl_args, self.CTRL_PARAMS)) + + request_arg = cst.Arg( + value=cst.Dict([ + cst.DictElement( + cst.SimpleString("'{}'".format(name)), +cst.Element(value=arg.value) + ) + # Note: the args + kwargs looks silly, but keep in mind that + # the control parameters had to be stripped out, and that + # those could have been passed positionally or by keyword. + for name, arg in zip(kword_params, args + kwargs)]), + keyword=cst.Name("request") + ) + + return updated.with_changes( + args=[request_arg] + ctrl_kwargs + ) + + +def fix_files( + in_dir: pathlib.Path, + out_dir: pathlib.Path, + *, + transformer=notebooksCallTransformer(), +): + """Duplicate the input dir to the output dir, fixing file method calls. + + Preconditions: + * in_dir is a real directory + * out_dir is a real, empty directory + """ + pyfile_gen = ( + pathlib.Path(os.path.join(root, f)) + for root, _, files in os.walk(in_dir) + for f in files if os.path.splitext(f)[1] == ".py" + ) + + for fpath in pyfile_gen: + with open(fpath, 'r') as f: + src = f.read() + + # Parse the code and insert method call fixes. + tree = cst.parse_module(src) + updated = tree.visit(transformer) + + # Create the path and directory structure for the new file. + updated_path = out_dir.joinpath(fpath.relative_to(in_dir)) + updated_path.parent.mkdir(parents=True, exist_ok=True) + + # Generate the updated source file at the corresponding path. + with open(updated_path, 'w') as f: + f.write(updated.code) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser( + description="""Fix up source that uses the notebooks client library. + +The existing sources are NOT overwritten but are copied to output_dir with changes made. + +Note: This tool operates at a best-effort level at converting positional + parameters in client method calls to keyword based parameters. + Cases where it WILL FAIL include + A) * or ** expansion in a method call. + B) Calls via function or method alias (includes free function calls) + C) Indirect or dispatched calls (e.g. the method is looked up dynamically) + + These all constitute false negatives. The tool will also detect false + positives when an API method shares a name with another method. +""") + parser.add_argument( + '-d', + '--input-directory', + required=True, + dest='input_dir', + help='the input directory to walk for python files to fix up', + ) + parser.add_argument( + '-o', + '--output-directory', + required=True, + dest='output_dir', + help='the directory to output files fixed via un-flattening', + ) + args = parser.parse_args() + input_dir = pathlib.Path(args.input_dir) + output_dir = pathlib.Path(args.output_dir) + if not input_dir.is_dir(): + print( + f"input directory '{input_dir}' does not exist or is not a directory", + file=sys.stderr, + ) + sys.exit(-1) + + if not output_dir.is_dir(): + print( + f"output directory '{output_dir}' does not exist or is not a directory", + file=sys.stderr, + ) + sys.exit(-1) + + if os.listdir(output_dir): + print( + f"output directory '{output_dir}' is not empty", + file=sys.stderr, + ) + sys.exit(-1) + + fix_files(input_dir, output_dir) diff --git a/scripts/fixup_notebooks_v1beta1_keywords.py b/scripts/fixup_notebooks_v1beta1_keywords.py index 5841260..3fd0a18 100644 --- a/scripts/fixup_notebooks_v1beta1_keywords.py +++ b/scripts/fixup_notebooks_v1beta1_keywords.py @@ -1,5 +1,5 @@ +#! /usr/bin/env python3 # -*- coding: utf-8 -*- - # Copyright 2020 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -14,7 +14,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # - import argparse import os import libcst as cst @@ -40,26 +39,25 @@ def partition( class notebooksCallTransformer(cst.CSTTransformer): CTRL_PARAMS: Tuple[str] = ('retry', 'timeout', 'metadata') METHOD_TO_PARAMS: Dict[str, Tuple[str]] = { - 'create_environment': ('parent', 'environment_id', 'environment', ), - 'create_instance': ('parent', 'instance_id', 'instance', ), - 'delete_environment': ('name', ), - 'delete_instance': ('name', ), - 'get_environment': ('name', ), - 'get_instance': ('name', ), - 'is_instance_upgradeable': ('notebook_instance', ), - 'list_environments': ('parent', 'page_size', 'page_token', ), - 'list_instances': ('parent', 'page_size', 'page_token', ), - 'register_instance': ('parent', 'instance_id', ), - 'report_instance_info': ('name', 'vm_id', 'metadata', ), - 'reset_instance': ('name', ), - 'set_instance_accelerator': ('name', 'type', 'core_count', ), - 'set_instance_labels': ('name', 'labels', ), - 'set_instance_machine_type': ('name', 'machine_type', ), - 'start_instance': ('name', ), - 'stop_instance': ('name', ), - 'upgrade_instance': ('name', ), - 'upgrade_instance_internal': ('name', 'vm_id', ), - + 'create_environment': ('parent', 'environment_id', 'environment', ), + 'create_instance': ('parent', 'instance_id', 'instance', ), + 'delete_environment': ('name', ), + 'delete_instance': ('name', ), + 'get_environment': ('name', ), + 'get_instance': ('name', ), + 'is_instance_upgradeable': ('notebook_instance', ), + 'list_environments': ('parent', 'page_size', 'page_token', ), + 'list_instances': ('parent', 'page_size', 'page_token', ), + 'register_instance': ('parent', 'instance_id', ), + 'report_instance_info': ('name', 'vm_id', 'metadata', ), + 'reset_instance': ('name', ), + 'set_instance_accelerator': ('name', 'type_', 'core_count', ), + 'set_instance_labels': ('name', 'labels', ), + 'set_instance_machine_type': ('name', 'machine_type', ), + 'start_instance': ('name', ), + 'stop_instance': ('name', ), + 'upgrade_instance': ('name', ), + 'upgrade_instance_internal': ('name', 'vm_id', ), } def leave_Call(self, original: cst.Call, updated: cst.Call) -> cst.CSTNode: @@ -78,7 +76,7 @@ def leave_Call(self, original: cst.Call, updated: cst.Call) -> cst.CSTNode: return updated kwargs, ctrl_kwargs = partition( - lambda a: not a.keyword.value in self.CTRL_PARAMS, + lambda a: a.keyword.value not in self.CTRL_PARAMS, kwargs ) @@ -90,7 +88,7 @@ def leave_Call(self, original: cst.Call, updated: cst.Call) -> cst.CSTNode: value=cst.Dict([ cst.DictElement( cst.SimpleString("'{}'".format(name)), - cst.Element(value=arg.value) +cst.Element(value=arg.value) ) # Note: the args + kwargs looks silly, but keep in mind that # the control parameters had to be stripped out, and that diff --git a/setup.py b/setup.py index a9d4643..aa0e2f8 100644 --- a/setup.py +++ b/setup.py @@ -43,9 +43,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.1.0", - "packaging >= 14.3", ), python_requires=">=3.6", classifiers=[ diff --git a/testing/constraints-3.6.txt b/testing/constraints-3.6.txt index 867f6df..4295a5d 100644 --- a/testing/constraints-3.6.txt +++ b/testing/constraints-3.6.txt @@ -5,9 +5,5 @@ # # e.g., if setup.py has "foo >= 1.14.0, < 2.0.0dev", # Then this file should have foo==1.14.0 -google-api-core==1.26.0 +google-api-core==1.28.0 proto-plus==1.1.0 -packaging==14.3 -# TODO: remove once google-auth>=1.25.0 is required transitively -# through google-api-core>=1.28.0 -google-auth==1.24.0 diff --git a/tests/unit/gapic/notebooks_v1/test_managed_notebook_service.py b/tests/unit/gapic/notebooks_v1/test_managed_notebook_service.py index 2f53443..0bce6c3 100644 --- a/tests/unit/gapic/notebooks_v1/test_managed_notebook_service.py +++ b/tests/unit/gapic/notebooks_v1/test_managed_notebook_service.py @@ -15,7 +15,6 @@ # import os import mock -import packaging.version import grpc from grpc.experimental import aio @@ -43,9 +42,6 @@ ) from google.cloud.notebooks_v1.services.managed_notebook_service import pagers from google.cloud.notebooks_v1.services.managed_notebook_service import transports -from google.cloud.notebooks_v1.services.managed_notebook_service.transports.base import ( - _GOOGLE_AUTH_VERSION, -) from google.cloud.notebooks_v1.types import environment from google.cloud.notebooks_v1.types import event from google.cloud.notebooks_v1.types import managed_service @@ -58,20 +54,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" @@ -233,7 +215,7 @@ def test_managed_notebook_service_client_client_options( 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, @@ -250,7 +232,7 @@ def test_managed_notebook_service_client_client_options( 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, @@ -267,7 +249,7 @@ def test_managed_notebook_service_client_client_options( 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, @@ -296,7 +278,7 @@ def test_managed_notebook_service_client_client_options( 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, @@ -365,7 +347,7 @@ def test_managed_notebook_service_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 @@ -407,7 +389,7 @@ def test_managed_notebook_service_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, @@ -429,7 +411,7 @@ def test_managed_notebook_service_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, @@ -464,7 +446,7 @@ def test_managed_notebook_service_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, @@ -499,7 +481,7 @@ def test_managed_notebook_service_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", @@ -2691,7 +2673,6 @@ def test_managed_notebook_service_base_transport(): transport.operations_client -@requires_google_auth_gte_1_25_0 def test_managed_notebook_service_base_transport_with_credentials_file(): # Instantiate the base transport with a credentials file with mock.patch.object( @@ -2712,26 +2693,6 @@ def test_managed_notebook_service_base_transport_with_credentials_file(): ) -@requires_google_auth_lt_1_25_0 -def test_managed_notebook_service_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.notebooks_v1.services.managed_notebook_service.transports.ManagedNotebookServiceTransport._prep_wrapped_messages" - ) as Transport: - Transport.return_value = None - load_creds.return_value = (ga_credentials.AnonymousCredentials(), None) - transport = transports.ManagedNotebookServiceTransport( - 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_managed_notebook_service_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( @@ -2743,7 +2704,6 @@ def test_managed_notebook_service_base_transport_with_adc(): adc.assert_called_once() -@requires_google_auth_gte_1_25_0 def test_managed_notebook_service_auth_adc(): # If no credentials are provided, we should use ADC credentials. with mock.patch.object(google.auth, "default", autospec=True) as adc: @@ -2756,18 +2716,6 @@ def test_managed_notebook_service_auth_adc(): ) -@requires_google_auth_lt_1_25_0 -def test_managed_notebook_service_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) - ManagedNotebookServiceClient() - adc.assert_called_once_with( - scopes=("https://www.googleapis.com/auth/cloud-platform",), - quota_project_id=None, - ) - - @pytest.mark.parametrize( "transport_class", [ @@ -2775,7 +2723,6 @@ def test_managed_notebook_service_auth_adc_old_google_auth(): transports.ManagedNotebookServiceGrpcAsyncIOTransport, ], ) -@requires_google_auth_gte_1_25_0 def test_managed_notebook_service_transport_auth_adc(transport_class): # If credentials and host are not provided, the transport class should use # ADC credentials. @@ -2789,26 +2736,6 @@ def test_managed_notebook_service_transport_auth_adc(transport_class): ) -@pytest.mark.parametrize( - "transport_class", - [ - transports.ManagedNotebookServiceGrpcTransport, - transports.ManagedNotebookServiceGrpcAsyncIOTransport, - ], -) -@requires_google_auth_lt_1_25_0 -def test_managed_notebook_service_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/notebooks_v1/test_notebook_service.py b/tests/unit/gapic/notebooks_v1/test_notebook_service.py index 63e1599..88fe905 100644 --- a/tests/unit/gapic/notebooks_v1/test_notebook_service.py +++ b/tests/unit/gapic/notebooks_v1/test_notebook_service.py @@ -15,7 +15,6 @@ # import os import mock -import packaging.version import grpc from grpc.experimental import aio @@ -41,9 +40,6 @@ from google.cloud.notebooks_v1.services.notebook_service import NotebookServiceClient from google.cloud.notebooks_v1.services.notebook_service import pagers from google.cloud.notebooks_v1.services.notebook_service import transports -from google.cloud.notebooks_v1.services.notebook_service.transports.base import ( - _GOOGLE_AUTH_VERSION, -) from google.cloud.notebooks_v1.types import environment from google.cloud.notebooks_v1.types import environment as gcn_environment from google.cloud.notebooks_v1.types import execution @@ -60,20 +56,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" @@ -230,7 +212,7 @@ def test_notebook_service_client_client_options( 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, @@ -247,7 +229,7 @@ def test_notebook_service_client_client_options( 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, @@ -264,7 +246,7 @@ def test_notebook_service_client_client_options( 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, @@ -293,7 +275,7 @@ def test_notebook_service_client_client_options( 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, @@ -362,7 +344,7 @@ def test_notebook_service_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 @@ -404,7 +386,7 @@ def test_notebook_service_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, @@ -426,7 +408,7 @@ def test_notebook_service_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, @@ -457,7 +439,7 @@ def test_notebook_service_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, @@ -488,7 +470,7 @@ def test_notebook_service_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", @@ -7093,7 +7075,6 @@ def test_notebook_service_base_transport(): transport.operations_client -@requires_google_auth_gte_1_25_0 def test_notebook_service_base_transport_with_credentials_file(): # Instantiate the base transport with a credentials file with mock.patch.object( @@ -7114,26 +7095,6 @@ def test_notebook_service_base_transport_with_credentials_file(): ) -@requires_google_auth_lt_1_25_0 -def test_notebook_service_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.notebooks_v1.services.notebook_service.transports.NotebookServiceTransport._prep_wrapped_messages" - ) as Transport: - Transport.return_value = None - load_creds.return_value = (ga_credentials.AnonymousCredentials(), None) - transport = transports.NotebookServiceTransport( - 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_notebook_service_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( @@ -7145,7 +7106,6 @@ def test_notebook_service_base_transport_with_adc(): adc.assert_called_once() -@requires_google_auth_gte_1_25_0 def test_notebook_service_auth_adc(): # If no credentials are provided, we should use ADC credentials. with mock.patch.object(google.auth, "default", autospec=True) as adc: @@ -7158,18 +7118,6 @@ def test_notebook_service_auth_adc(): ) -@requires_google_auth_lt_1_25_0 -def test_notebook_service_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) - NotebookServiceClient() - adc.assert_called_once_with( - scopes=("https://www.googleapis.com/auth/cloud-platform",), - quota_project_id=None, - ) - - @pytest.mark.parametrize( "transport_class", [ @@ -7177,7 +7125,6 @@ def test_notebook_service_auth_adc_old_google_auth(): transports.NotebookServiceGrpcAsyncIOTransport, ], ) -@requires_google_auth_gte_1_25_0 def test_notebook_service_transport_auth_adc(transport_class): # If credentials and host are not provided, the transport class should use # ADC credentials. @@ -7191,26 +7138,6 @@ def test_notebook_service_transport_auth_adc(transport_class): ) -@pytest.mark.parametrize( - "transport_class", - [ - transports.NotebookServiceGrpcTransport, - transports.NotebookServiceGrpcAsyncIOTransport, - ], -) -@requires_google_auth_lt_1_25_0 -def test_notebook_service_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/notebooks_v1beta1/test_notebook_service.py b/tests/unit/gapic/notebooks_v1beta1/test_notebook_service.py index 0f45c66..7481e4d 100644 --- a/tests/unit/gapic/notebooks_v1beta1/test_notebook_service.py +++ b/tests/unit/gapic/notebooks_v1beta1/test_notebook_service.py @@ -15,7 +15,6 @@ # import os import mock -import packaging.version import grpc from grpc.experimental import aio @@ -43,9 +42,6 @@ ) from google.cloud.notebooks_v1beta1.services.notebook_service import pagers from google.cloud.notebooks_v1beta1.services.notebook_service import transports -from google.cloud.notebooks_v1beta1.services.notebook_service.transports.base import ( - _GOOGLE_AUTH_VERSION, -) from google.cloud.notebooks_v1beta1.types import environment from google.cloud.notebooks_v1beta1.types import instance from google.cloud.notebooks_v1beta1.types import service @@ -55,20 +51,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" @@ -225,7 +207,7 @@ def test_notebook_service_client_client_options( 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, @@ -242,7 +224,7 @@ def test_notebook_service_client_client_options( 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, @@ -259,7 +241,7 @@ def test_notebook_service_client_client_options( 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, @@ -288,7 +270,7 @@ def test_notebook_service_client_client_options( 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, @@ -357,7 +339,7 @@ def test_notebook_service_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 @@ -399,7 +381,7 @@ def test_notebook_service_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, @@ -421,7 +403,7 @@ def test_notebook_service_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, @@ -452,7 +434,7 @@ def test_notebook_service_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, @@ -483,7 +465,7 @@ def test_notebook_service_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", @@ -3682,7 +3664,6 @@ def test_notebook_service_base_transport(): transport.operations_client -@requires_google_auth_gte_1_25_0 def test_notebook_service_base_transport_with_credentials_file(): # Instantiate the base transport with a credentials file with mock.patch.object( @@ -3703,26 +3684,6 @@ def test_notebook_service_base_transport_with_credentials_file(): ) -@requires_google_auth_lt_1_25_0 -def test_notebook_service_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.notebooks_v1beta1.services.notebook_service.transports.NotebookServiceTransport._prep_wrapped_messages" - ) as Transport: - Transport.return_value = None - load_creds.return_value = (ga_credentials.AnonymousCredentials(), None) - transport = transports.NotebookServiceTransport( - 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_notebook_service_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( @@ -3734,7 +3695,6 @@ def test_notebook_service_base_transport_with_adc(): adc.assert_called_once() -@requires_google_auth_gte_1_25_0 def test_notebook_service_auth_adc(): # If no credentials are provided, we should use ADC credentials. with mock.patch.object(google.auth, "default", autospec=True) as adc: @@ -3747,18 +3707,6 @@ def test_notebook_service_auth_adc(): ) -@requires_google_auth_lt_1_25_0 -def test_notebook_service_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) - NotebookServiceClient() - adc.assert_called_once_with( - scopes=("https://www.googleapis.com/auth/cloud-platform",), - quota_project_id=None, - ) - - @pytest.mark.parametrize( "transport_class", [ @@ -3766,7 +3714,6 @@ def test_notebook_service_auth_adc_old_google_auth(): transports.NotebookServiceGrpcAsyncIOTransport, ], ) -@requires_google_auth_gte_1_25_0 def test_notebook_service_transport_auth_adc(transport_class): # If credentials and host are not provided, the transport class should use # ADC credentials. @@ -3780,26 +3727,6 @@ def test_notebook_service_transport_auth_adc(transport_class): ) -@pytest.mark.parametrize( - "transport_class", - [ - transports.NotebookServiceGrpcTransport, - transports.NotebookServiceGrpcAsyncIOTransport, - ], -) -@requires_google_auth_lt_1_25_0 -def test_notebook_service_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", [