From e50d4c928601f6a32b22dcd36338e820254451d4 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 15:08:13 +0000 Subject: [PATCH] chore: use gapic-generator-python 0.53.4 (#278) - [ ] 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 --- .../services/auto_ml/async_client.py | 112 ++++++------- .../automl_v1/services/auto_ml/client.py | 38 ++--- .../services/auto_ml/transports/base.py | 37 +---- .../services/auto_ml/transports/grpc.py | 2 +- .../auto_ml/transports/grpc_asyncio.py | 3 +- .../prediction_service/async_client.py | 16 +- .../services/prediction_service/client.py | 6 +- .../prediction_service/transports/base.py | 37 +---- .../prediction_service/transports/grpc.py | 2 +- .../transports/grpc_asyncio.py | 3 +- .../automl_v1/types/annotation_payload.py | 12 ++ google/cloud/automl_v1/types/data_items.py | 14 ++ google/cloud/automl_v1/types/dataset.py | 13 ++ google/cloud/automl_v1/types/io.py | 19 +++ google/cloud/automl_v1/types/model.py | 13 ++ .../cloud/automl_v1/types/model_evaluation.py | 12 ++ google/cloud/automl_v1/types/operations.py | 24 +++ google/cloud/automl_v1/types/service.py | 9 ++ .../cloud/automl_v1/types/text_extraction.py | 3 + .../services/auto_ml/async_client.py | 148 +++++++++--------- .../automl_v1beta1/services/auto_ml/client.py | 50 +++--- .../services/auto_ml/transports/base.py | 37 +---- .../services/auto_ml/transports/grpc.py | 2 +- .../auto_ml/transports/grpc_asyncio.py | 3 +- .../prediction_service/async_client.py | 16 +- .../services/prediction_service/client.py | 6 +- .../prediction_service/transports/base.py | 37 +---- .../prediction_service/transports/grpc.py | 2 +- .../transports/grpc_asyncio.py | 3 +- .../types/annotation_payload.py | 15 ++ .../cloud/automl_v1beta1/types/data_items.py | 20 +++ .../cloud/automl_v1beta1/types/data_stats.py | 13 ++ .../cloud/automl_v1beta1/types/data_types.py | 10 ++ google/cloud/automl_v1beta1/types/dataset.py | 16 ++ google/cloud/automl_v1beta1/types/io.py | 49 ++++++ google/cloud/automl_v1beta1/types/model.py | 16 ++ .../automl_v1beta1/types/model_evaluation.py | 14 ++ .../cloud/automl_v1beta1/types/operations.py | 34 ++++ google/cloud/automl_v1beta1/types/service.py | 9 ++ google/cloud/automl_v1beta1/types/tables.py | 9 ++ .../automl_v1beta1/types/text_extraction.py | 3 + setup.py | 3 +- testing/constraints-3.6.txt | 4 +- tests/unit/gapic/automl_v1/test_auto_ml.py | 86 ++-------- .../automl_v1/test_prediction_service.py | 91 ++--------- .../unit/gapic/automl_v1beta1/test_auto_ml.py | 88 ++--------- .../automl_v1beta1/test_prediction_service.py | 91 ++--------- 47 files changed, 585 insertions(+), 665 deletions(-) diff --git a/google/cloud/automl_v1/services/auto_ml/async_client.py b/google/cloud/automl_v1/services/auto_ml/async_client.py index d3c07c45..cea29911 100644 --- a/google/cloud/automl_v1/services/auto_ml/async_client.py +++ b/google/cloud/automl_v1/services/auto_ml/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.automl_v1.services.auto_ml import pagers @@ -194,18 +196,18 @@ def __init__( async def create_dataset( self, - request: service.CreateDatasetRequest = None, + request: Union[service.CreateDatasetRequest, dict] = None, *, parent: str = None, dataset: gca_dataset.Dataset = 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 dataset. Args: - request (:class:`google.cloud.automl_v1.types.CreateDatasetRequest`): + request (Union[google.cloud.automl_v1.types.CreateDatasetRequest, dict]): The request object. Request message for [AutoMl.CreateDataset][google.cloud.automl.v1.AutoMl.CreateDataset]. parent (:class:`str`): @@ -283,17 +285,17 @@ async def create_dataset( async def get_dataset( self, - request: service.GetDatasetRequest = None, + request: Union[service.GetDatasetRequest, 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]] = (), ) -> dataset.Dataset: r"""Gets a dataset. Args: - request (:class:`google.cloud.automl_v1.types.GetDatasetRequest`): + request (Union[google.cloud.automl_v1.types.GetDatasetRequest, dict]): The request object. Request message for [AutoMl.GetDataset][google.cloud.automl.v1.AutoMl.GetDataset]. name (:class:`str`): @@ -366,17 +368,17 @@ async def get_dataset( async def list_datasets( self, - request: service.ListDatasetsRequest = None, + request: Union[service.ListDatasetsRequest, 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.ListDatasetsAsyncPager: r"""Lists datasets in a project. Args: - request (:class:`google.cloud.automl_v1.types.ListDatasetsRequest`): + request (Union[google.cloud.automl_v1.types.ListDatasetsRequest, dict]): The request object. Request message for [AutoMl.ListDatasets][google.cloud.automl.v1.AutoMl.ListDatasets]. parent (:class:`str`): @@ -456,18 +458,18 @@ async def list_datasets( async def update_dataset( self, - request: service.UpdateDatasetRequest = None, + request: Union[service.UpdateDatasetRequest, dict] = None, *, dataset: gca_dataset.Dataset = None, update_mask: field_mask_pb2.FieldMask = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gca_dataset.Dataset: r"""Updates a dataset. Args: - request (:class:`google.cloud.automl_v1.types.UpdateDatasetRequest`): + request (Union[google.cloud.automl_v1.types.UpdateDatasetRequest, dict]): The request object. Request message for [AutoMl.UpdateDataset][google.cloud.automl.v1.AutoMl.UpdateDataset] dataset (:class:`google.cloud.automl_v1.types.Dataset`): @@ -541,10 +543,10 @@ async def update_dataset( async def delete_dataset( self, - request: service.DeleteDatasetRequest = None, + request: Union[service.DeleteDatasetRequest, 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: @@ -555,7 +557,7 @@ async def delete_dataset( [metadata][google.longrunning.Operation.metadata] field. Args: - request (:class:`google.cloud.automl_v1.types.DeleteDatasetRequest`): + request (Union[google.cloud.automl_v1.types.DeleteDatasetRequest, dict]): The request object. Request message for [AutoMl.DeleteDataset][google.cloud.automl.v1.AutoMl.DeleteDataset]. name (:class:`str`): @@ -647,11 +649,11 @@ async def delete_dataset( async def import_data( self, - request: service.ImportDataRequest = None, + request: Union[service.ImportDataRequest, dict] = None, *, name: str = None, input_config: io.InputConfig = 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: @@ -667,7 +669,7 @@ async def import_data( field when it completes. Args: - request (:class:`google.cloud.automl_v1.types.ImportDataRequest`): + request (Union[google.cloud.automl_v1.types.ImportDataRequest, dict]): The request object. Request message for [AutoMl.ImportData][google.cloud.automl.v1.AutoMl.ImportData]. name (:class:`str`): @@ -760,11 +762,11 @@ async def import_data( async def export_data( self, - request: service.ExportDataRequest = None, + request: Union[service.ExportDataRequest, dict] = None, *, name: str = None, output_config: io.OutputConfig = 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: @@ -774,7 +776,7 @@ async def export_data( completes. Args: - request (:class:`google.cloud.automl_v1.types.ExportDataRequest`): + request (Union[google.cloud.automl_v1.types.ExportDataRequest, dict]): The request object. Request message for [AutoMl.ExportData][google.cloud.automl.v1.AutoMl.ExportData]. name (:class:`str`): @@ -865,17 +867,17 @@ async def export_data( async def get_annotation_spec( self, - request: service.GetAnnotationSpecRequest = None, + request: Union[service.GetAnnotationSpecRequest, 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]] = (), ) -> annotation_spec.AnnotationSpec: r"""Gets an annotation spec. Args: - request (:class:`google.cloud.automl_v1.types.GetAnnotationSpecRequest`): + request (Union[google.cloud.automl_v1.types.GetAnnotationSpecRequest, dict]): The request object. Request message for [AutoMl.GetAnnotationSpec][google.cloud.automl.v1.AutoMl.GetAnnotationSpec]. name (:class:`str`): @@ -944,11 +946,11 @@ async def get_annotation_spec( async def create_model( self, - request: service.CreateModelRequest = None, + request: Union[service.CreateModelRequest, dict] = None, *, parent: str = None, model: gca_model.Model = 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: @@ -959,7 +961,7 @@ async def create_model( each annotation spec. Args: - request (:class:`google.cloud.automl_v1.types.CreateModelRequest`): + request (Union[google.cloud.automl_v1.types.CreateModelRequest, dict]): The request object. Request message for [AutoMl.CreateModel][google.cloud.automl.v1.AutoMl.CreateModel]. parent (:class:`str`): @@ -1039,17 +1041,17 @@ async def create_model( async def get_model( self, - request: service.GetModelRequest = None, + request: Union[service.GetModelRequest, 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]] = (), ) -> model.Model: r"""Gets a model. Args: - request (:class:`google.cloud.automl_v1.types.GetModelRequest`): + request (Union[google.cloud.automl_v1.types.GetModelRequest, dict]): The request object. Request message for [AutoMl.GetModel][google.cloud.automl.v1.AutoMl.GetModel]. name (:class:`str`): @@ -1118,17 +1120,17 @@ async def get_model( async def list_models( self, - request: service.ListModelsRequest = None, + request: Union[service.ListModelsRequest, 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.ListModelsAsyncPager: r"""Lists models. Args: - request (:class:`google.cloud.automl_v1.types.ListModelsRequest`): + request (Union[google.cloud.automl_v1.types.ListModelsRequest, dict]): The request object. Request message for [AutoMl.ListModels][google.cloud.automl.v1.AutoMl.ListModels]. parent (:class:`str`): @@ -1208,10 +1210,10 @@ async def list_models( async def delete_model( self, - request: service.DeleteModelRequest = None, + request: Union[service.DeleteModelRequest, 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: @@ -1221,7 +1223,7 @@ async def delete_model( [metadata][google.longrunning.Operation.metadata] field. Args: - request (:class:`google.cloud.automl_v1.types.DeleteModelRequest`): + request (Union[google.cloud.automl_v1.types.DeleteModelRequest, dict]): The request object. Request message for [AutoMl.DeleteModel][google.cloud.automl.v1.AutoMl.DeleteModel]. name (:class:`str`): @@ -1313,18 +1315,18 @@ async def delete_model( async def update_model( self, - request: service.UpdateModelRequest = None, + request: Union[service.UpdateModelRequest, dict] = None, *, model: gca_model.Model = None, update_mask: field_mask_pb2.FieldMask = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gca_model.Model: r"""Updates a model. Args: - request (:class:`google.cloud.automl_v1.types.UpdateModelRequest`): + request (Union[google.cloud.automl_v1.types.UpdateModelRequest, dict]): The request object. Request message for [AutoMl.UpdateModel][google.cloud.automl.v1.AutoMl.UpdateModel] model (:class:`google.cloud.automl_v1.types.Model`): @@ -1396,10 +1398,10 @@ async def update_model( async def deploy_model( self, - request: service.DeployModelRequest = None, + request: Union[service.DeployModelRequest, 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: @@ -1420,7 +1422,7 @@ async def deploy_model( completes. Args: - request (:class:`google.cloud.automl_v1.types.DeployModelRequest`): + request (Union[google.cloud.automl_v1.types.DeployModelRequest, dict]): The request object. Request message for [AutoMl.DeployModel][google.cloud.automl.v1.AutoMl.DeployModel]. name (:class:`str`): @@ -1502,10 +1504,10 @@ async def deploy_model( async def undeploy_model( self, - request: service.UndeployModelRequest = None, + request: Union[service.UndeployModelRequest, 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: @@ -1520,7 +1522,7 @@ async def undeploy_model( completes. Args: - request (:class:`google.cloud.automl_v1.types.UndeployModelRequest`): + request (Union[google.cloud.automl_v1.types.UndeployModelRequest, dict]): The request object. Request message for [AutoMl.UndeployModel][google.cloud.automl.v1.AutoMl.UndeployModel]. name (:class:`str`): @@ -1602,11 +1604,11 @@ async def undeploy_model( async def export_model( self, - request: service.ExportModelRequest = None, + request: Union[service.ExportModelRequest, dict] = None, *, name: str = None, output_config: io.ModelExportOutputConfig = 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: @@ -1620,7 +1622,7 @@ async def export_model( completes. Args: - request (:class:`google.cloud.automl_v1.types.ExportModelRequest`): + request (Union[google.cloud.automl_v1.types.ExportModelRequest, dict]): The request object. Request message for [AutoMl.ExportModel][google.cloud.automl.v1.AutoMl.ExportModel]. Models need to be enabled for exporting, otherwise an @@ -1713,17 +1715,17 @@ async def export_model( async def get_model_evaluation( self, - request: service.GetModelEvaluationRequest = None, + request: Union[service.GetModelEvaluationRequest, 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]] = (), ) -> model_evaluation.ModelEvaluation: r"""Gets a model evaluation. Args: - request (:class:`google.cloud.automl_v1.types.GetModelEvaluationRequest`): + request (Union[google.cloud.automl_v1.types.GetModelEvaluationRequest, dict]): The request object. Request message for [AutoMl.GetModelEvaluation][google.cloud.automl.v1.AutoMl.GetModelEvaluation]. name (:class:`str`): @@ -1792,18 +1794,18 @@ async def get_model_evaluation( async def list_model_evaluations( self, - request: service.ListModelEvaluationsRequest = None, + request: Union[service.ListModelEvaluationsRequest, dict] = None, *, parent: str = None, filter: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListModelEvaluationsAsyncPager: r"""Lists model evaluations. Args: - request (:class:`google.cloud.automl_v1.types.ListModelEvaluationsRequest`): + request (Union[google.cloud.automl_v1.types.ListModelEvaluationsRequest, dict]): The request object. Request message for [AutoMl.ListModelEvaluations][google.cloud.automl.v1.AutoMl.ListModelEvaluations]. parent (:class:`str`): diff --git a/google/cloud/automl_v1/services/auto_ml/client.py b/google/cloud/automl_v1/services/auto_ml/client.py index 3c368d73..6ca00fc8 100644 --- a/google/cloud/automl_v1/services/auto_ml/client.py +++ b/google/cloud/automl_v1/services/auto_ml/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.automl_v1.services.auto_ml import pagers @@ -444,7 +446,7 @@ def create_dataset( *, parent: str = None, dataset: gca_dataset.Dataset = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -532,7 +534,7 @@ def get_dataset( request: Union[service.GetDatasetRequest, 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]] = (), ) -> dataset.Dataset: @@ -605,7 +607,7 @@ def list_datasets( request: Union[service.ListDatasetsRequest, 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.ListDatasetsPager: @@ -686,7 +688,7 @@ def update_dataset( *, dataset: gca_dataset.Dataset = None, update_mask: field_mask_pb2.FieldMask = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gca_dataset.Dataset: @@ -770,7 +772,7 @@ def delete_dataset( request: Union[service.DeleteDatasetRequest, 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: @@ -867,7 +869,7 @@ def import_data( *, name: str = None, input_config: io.InputConfig = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -980,7 +982,7 @@ def export_data( *, name: str = None, output_config: io.OutputConfig = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -1084,7 +1086,7 @@ def get_annotation_spec( request: Union[service.GetAnnotationSpecRequest, 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]] = (), ) -> annotation_spec.AnnotationSpec: @@ -1154,7 +1156,7 @@ def create_model( *, parent: str = None, model: gca_model.Model = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -1248,7 +1250,7 @@ def get_model( request: Union[service.GetModelRequest, 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]] = (), ) -> model.Model: @@ -1317,7 +1319,7 @@ def list_models( request: Union[service.ListModelsRequest, 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.ListModelsPager: @@ -1397,7 +1399,7 @@ def delete_model( request: Union[service.DeleteModelRequest, 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: @@ -1493,7 +1495,7 @@ def update_model( *, model: gca_model.Model = None, update_mask: field_mask_pb2.FieldMask = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gca_model.Model: @@ -1575,7 +1577,7 @@ def deploy_model( request: Union[service.DeployModelRequest, 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: @@ -1681,7 +1683,7 @@ def undeploy_model( request: Union[service.UndeployModelRequest, 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: @@ -1782,7 +1784,7 @@ def export_model( *, name: str = None, output_config: io.ModelExportOutputConfig = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -1892,7 +1894,7 @@ def get_model_evaluation( request: Union[service.GetModelEvaluationRequest, 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]] = (), ) -> model_evaluation.ModelEvaluation: @@ -1962,7 +1964,7 @@ def list_model_evaluations( *, parent: str = None, filter: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListModelEvaluationsPager: diff --git a/google/cloud/automl_v1/services/auto_ml/transports/base.py b/google/cloud/automl_v1/services/auto_ml/transports/base.py index 8ae4cb86..57f0f0fc 100644 --- a/google/cloud/automl_v1/services/auto_ml/transports/base.py +++ b/google/cloud/automl_v1/services/auto_ml/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 @@ -43,15 +42,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 AutoMlTransport(abc.ABC): """Abstract transport class for AutoMl.""" @@ -101,7 +91,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 @@ -134,29 +124,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 = { @@ -334,7 +301,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/automl_v1/services/auto_ml/transports/grpc.py b/google/cloud/automl_v1/services/auto_ml/transports/grpc.py index 14e83e96..f1995874 100644 --- a/google/cloud/automl_v1/services/auto_ml/transports/grpc.py +++ b/google/cloud/automl_v1/services/auto_ml/transports/grpc.py @@ -132,7 +132,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/automl_v1/services/auto_ml/transports/grpc_asyncio.py b/google/cloud/automl_v1/services/auto_ml/transports/grpc_asyncio.py index 40840c33..38c244e4 100644 --- a/google/cloud/automl_v1/services/auto_ml/transports/grpc_asyncio.py +++ b/google/cloud/automl_v1/services/auto_ml/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 @@ -179,7 +178,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/automl_v1/services/prediction_service/async_client.py b/google/cloud/automl_v1/services/prediction_service/async_client.py index 6efce933..c376485c 100644 --- a/google/cloud/automl_v1/services/prediction_service/async_client.py +++ b/google/cloud/automl_v1/services/prediction_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.automl_v1.types import annotation_payload @@ -172,12 +174,12 @@ def __init__( async def predict( self, - request: prediction_service.PredictRequest = None, + request: Union[prediction_service.PredictRequest, dict] = None, *, name: str = None, payload: data_items.ExamplePayload = None, params: Sequence[prediction_service.PredictRequest.ParamsEntry] = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> prediction_service.PredictResponse: @@ -220,7 +222,7 @@ async def predict( up to 5MB. Not available for FORECASTING ``prediction_type``. Args: - request (:class:`google.cloud.automl_v1.types.PredictRequest`): + request (Union[google.cloud.automl_v1.types.PredictRequest, dict]): The request object. Request message for [PredictionService.Predict][google.cloud.automl.v1.PredictionService.Predict]. name (:class:`str`): @@ -330,13 +332,13 @@ async def predict( async def batch_predict( self, - request: prediction_service.BatchPredictRequest = None, + request: Union[prediction_service.BatchPredictRequest, dict] = None, *, name: str = None, input_config: io.BatchPredictInputConfig = None, output_config: io.BatchPredictOutputConfig = None, params: Sequence[prediction_service.BatchPredictRequest.ParamsEntry] = 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: @@ -362,7 +364,7 @@ async def batch_predict( - AutoML Tables Args: - request (:class:`google.cloud.automl_v1.types.BatchPredictRequest`): + request (Union[google.cloud.automl_v1.types.BatchPredictRequest, dict]): The request object. Request message for [PredictionService.BatchPredict][google.cloud.automl.v1.PredictionService.BatchPredict]. name (:class:`str`): diff --git a/google/cloud/automl_v1/services/prediction_service/client.py b/google/cloud/automl_v1/services/prediction_service/client.py index 903d8312..be8b4b4d 100644 --- a/google/cloud/automl_v1/services/prediction_service/client.py +++ b/google/cloud/automl_v1/services/prediction_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.automl_v1.types import annotation_payload @@ -365,7 +367,7 @@ def predict( name: str = None, payload: data_items.ExamplePayload = None, params: Sequence[prediction_service.PredictRequest.ParamsEntry] = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> prediction_service.PredictResponse: @@ -523,7 +525,7 @@ def batch_predict( input_config: io.BatchPredictInputConfig = None, output_config: io.BatchPredictOutputConfig = None, params: Sequence[prediction_service.BatchPredictRequest.ParamsEntry] = 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/automl_v1/services/prediction_service/transports/base.py b/google/cloud/automl_v1/services/prediction_service/transports/base.py index 0ad270ca..486a0cdb 100644 --- a/google/cloud/automl_v1/services/prediction_service/transports/base.py +++ b/google/cloud/automl_v1/services/prediction_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 @@ -37,15 +36,6 @@ except pkg_resources.DistributionNotFound: DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo() -try: - # google.auth.__version__ was added in 1.26.0 - _GOOGLE_AUTH_VERSION = google.auth.__version__ -except AttributeError: - try: # try pkg_resources if it is available - _GOOGLE_AUTH_VERSION = pkg_resources.get_distribution("google-auth").version - except pkg_resources.DistributionNotFound: # pragma: NO COVER - _GOOGLE_AUTH_VERSION = None - class PredictionServiceTransport(abc.ABC): """Abstract transport class for PredictionService.""" @@ -95,7 +85,7 @@ def __init__( host += ":443" self._host = host - scopes_kwargs = self._get_scopes_kwargs(self._host, scopes) + scopes_kwargs = {"scopes": scopes, "default_scopes": self.AUTH_SCOPES} # Save the scopes. self._scopes = scopes @@ -128,29 +118,6 @@ def __init__( # Save the credentials. self._credentials = credentials - # TODO(busunkim): This method is in the base transport - # to avoid duplicating code across the transport classes. These functions - # should be deleted once the minimum required versions of google-auth is increased. - - # TODO: Remove this function once google-auth >= 1.25.0 is required - @classmethod - def _get_scopes_kwargs( - cls, host: str, scopes: Optional[Sequence[str]] - ) -> Dict[str, Optional[Sequence[str]]]: - """Returns scopes kwargs to pass to google-auth methods depending on the google-auth version""" - - scopes_kwargs = {} - - if _GOOGLE_AUTH_VERSION and ( - packaging.version.parse(_GOOGLE_AUTH_VERSION) - >= packaging.version.parse("1.25.0") - ): - scopes_kwargs = {"scopes": scopes, "default_scopes": cls.AUTH_SCOPES} - else: - scopes_kwargs = {"scopes": scopes or cls.AUTH_SCOPES} - - return scopes_kwargs - def _prep_wrapped_messages(self, client_info): # Precompute the wrapped methods. self._wrapped_methods = { @@ -172,7 +139,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/automl_v1/services/prediction_service/transports/grpc.py b/google/cloud/automl_v1/services/prediction_service/transports/grpc.py index 2f689bb1..a1ba6ec4 100644 --- a/google/cloud/automl_v1/services/prediction_service/transports/grpc.py +++ b/google/cloud/automl_v1/services/prediction_service/transports/grpc.py @@ -115,7 +115,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/automl_v1/services/prediction_service/transports/grpc_asyncio.py b/google/cloud/automl_v1/services/prediction_service/transports/grpc_asyncio.py index 226e2e8b..8549d7a9 100644 --- a/google/cloud/automl_v1/services/prediction_service/transports/grpc_asyncio.py +++ b/google/cloud/automl_v1/services/prediction_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 @@ -162,7 +161,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/automl_v1/types/annotation_payload.py b/google/cloud/automl_v1/types/annotation_payload.py index 26ef30e6..74b63c72 100644 --- a/google/cloud/automl_v1/types/annotation_payload.py +++ b/google/cloud/automl_v1/types/annotation_payload.py @@ -30,19 +30,31 @@ class AnnotationPayload(proto.Message): r"""Contains annotation information that is relevant to AutoML. + 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: translation (google.cloud.automl_v1.types.TranslationAnnotation): Annotation details for translation. + This field is a member of `oneof`_ ``detail``. classification (google.cloud.automl_v1.types.ClassificationAnnotation): Annotation details for content or image classification. + This field is a member of `oneof`_ ``detail``. image_object_detection (google.cloud.automl_v1.types.ImageObjectDetectionAnnotation): Annotation details for image object detection. + This field is a member of `oneof`_ ``detail``. text_extraction (google.cloud.automl_v1.types.TextExtractionAnnotation): Annotation details for text extraction. + This field is a member of `oneof`_ ``detail``. text_sentiment (google.cloud.automl_v1.types.TextSentimentAnnotation): Annotation details for text sentiment. + This field is a member of `oneof`_ ``detail``. annotation_spec_id (str): Output only . The resource ID of the annotation spec that this annotation pertains diff --git a/google/cloud/automl_v1/types/data_items.py b/google/cloud/automl_v1/types/data_items.py index ff09d9dd..8aaabc7a 100644 --- a/google/cloud/automl_v1/types/data_items.py +++ b/google/cloud/automl_v1/types/data_items.py @@ -36,11 +36,15 @@ class Image(proto.Message): r"""A representation of an image. Only images up to 30MB in size are supported. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + Attributes: image_bytes (bytes): Image content represented as a stream of bytes. Note: As with all ``bytes`` fields, protobuffers use a pure binary representation, whereas JSON representations use base64. + This field is a member of `oneof`_ ``data``. thumbnail_uri (str): Output only. HTTP URI to the thumbnail image. """ @@ -185,13 +189,23 @@ class TextSegmentType(proto.Enum): class ExamplePayload(proto.Message): r"""Example data used for training or prediction. + 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: image (google.cloud.automl_v1.types.Image): Example image. + This field is a member of `oneof`_ ``payload``. text_snippet (google.cloud.automl_v1.types.TextSnippet): Example text. + This field is a member of `oneof`_ ``payload``. document (google.cloud.automl_v1.types.Document): Example document. + This field is a member of `oneof`_ ``payload``. """ image = proto.Field(proto.MESSAGE, number=1, oneof="payload", message="Image",) diff --git a/google/cloud/automl_v1/types/dataset.py b/google/cloud/automl_v1/types/dataset.py index bb19f184..fcca1cd2 100644 --- a/google/cloud/automl_v1/types/dataset.py +++ b/google/cloud/automl_v1/types/dataset.py @@ -29,24 +29,37 @@ class Dataset(proto.Message): (ML) problem. A workspace contains examples that may be annotated. + 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: translation_dataset_metadata (google.cloud.automl_v1.types.TranslationDatasetMetadata): Metadata for a dataset used for translation. + This field is a member of `oneof`_ ``dataset_metadata``. image_classification_dataset_metadata (google.cloud.automl_v1.types.ImageClassificationDatasetMetadata): Metadata for a dataset used for image classification. + This field is a member of `oneof`_ ``dataset_metadata``. text_classification_dataset_metadata (google.cloud.automl_v1.types.TextClassificationDatasetMetadata): Metadata for a dataset used for text classification. + This field is a member of `oneof`_ ``dataset_metadata``. image_object_detection_dataset_metadata (google.cloud.automl_v1.types.ImageObjectDetectionDatasetMetadata): Metadata for a dataset used for image object detection. + This field is a member of `oneof`_ ``dataset_metadata``. text_extraction_dataset_metadata (google.cloud.automl_v1.types.TextExtractionDatasetMetadata): Metadata for a dataset used for text extraction. + This field is a member of `oneof`_ ``dataset_metadata``. text_sentiment_dataset_metadata (google.cloud.automl_v1.types.TextSentimentDatasetMetadata): Metadata for a dataset used for text sentiment. + This field is a member of `oneof`_ ``dataset_metadata``. name (str): Output only. The resource name of the dataset. Form: ``projects/{project_id}/locations/{location_id}/datasets/{dataset_id}`` diff --git a/google/cloud/automl_v1/types/io.py b/google/cloud/automl_v1/types/io.py index f1581316..4c01feb4 100644 --- a/google/cloud/automl_v1/types/io.py +++ b/google/cloud/automl_v1/types/io.py @@ -711,6 +711,9 @@ class InputConfig(proto.Message): failure the per-row failures, up to a certain count cap, is listed in Operation.metadata.partial_failures. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + Attributes: gcs_source (google.cloud.automl_v1.types.GcsSource): The Google Cloud Storage location for the input content. For @@ -718,6 +721,7 @@ class InputConfig(proto.Message): ``gcs_source`` points to a CSV file with a structure described in [InputConfig][google.cloud.automl.v1.InputConfig]. + This field is a member of `oneof`_ ``source``. params (Sequence[google.cloud.automl_v1.types.InputConfig.ParamsEntry]): Additional domain-specific parameters describing the semantic of the imported data, any string must be up to @@ -1071,10 +1075,14 @@ class BatchPredictInputConfig(proto.Message): or failure the per-row failures, up to a certain count cap, will be listed in Operation.metadata.partial_failures. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + Attributes: gcs_source (google.cloud.automl_v1.types.GcsSource): Required. The Google Cloud Storage location for the input content. + This field is a member of `oneof`_ ``source``. """ gcs_source = proto.Field( @@ -1127,6 +1135,9 @@ class OutputConfig(proto.Message): dataset a new table called ``primary_table`` will be created, and filled with precisely the same data as this obtained on import. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + Attributes: gcs_destination (google.cloud.automl_v1.types.GcsDestination): Required. The Google Cloud Storage location where the output @@ -1136,6 +1147,7 @@ class OutputConfig(proto.Message): export_data-- where timestamp is in YYYY-MM-DDThh:mm:ss.sssZ ISO-8601 format. All export output will be written into that directory. + This field is a member of `oneof`_ ``destination``. """ gcs_destination = proto.Field( @@ -1432,11 +1444,15 @@ class BatchPredictOutputConfig(proto.Message): represented as a STRUCT, and containing only ``code`` and ``message``. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + Attributes: gcs_destination (google.cloud.automl_v1.types.GcsDestination): Required. The Google Cloud Storage location of the directory where the output is to be written to. + This field is a member of `oneof`_ ``destination``. """ gcs_destination = proto.Field( @@ -1447,6 +1463,8 @@ class BatchPredictOutputConfig(proto.Message): class ModelExportOutputConfig(proto.Message): r"""Output configuration for ModelExport Action. + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + Attributes: gcs_destination (google.cloud.automl_v1.types.GcsDestination): Required. The Google Cloud Storage location where the model @@ -1459,6 +1477,7 @@ class ModelExportOutputConfig(proto.Message): YYYY-MM-DDThh:mm:ss.sssZ ISO-8601 format, will be created. Inside the model and any of its supporting files will be written. + This field is a member of `oneof`_ ``destination``. model_format (str): The format in which the model must be exported. The available, and default, formats depend on the problem and diff --git a/google/cloud/automl_v1/types/model.py b/google/cloud/automl_v1/types/model.py index ea1a635f..0bee0213 100644 --- a/google/cloud/automl_v1/types/model.py +++ b/google/cloud/automl_v1/types/model.py @@ -27,19 +27,32 @@ class Model(proto.Message): r"""API proto representing a trained machine learning model. + 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: translation_model_metadata (google.cloud.automl_v1.types.TranslationModelMetadata): Metadata for translation models. + This field is a member of `oneof`_ ``model_metadata``. image_classification_model_metadata (google.cloud.automl_v1.types.ImageClassificationModelMetadata): Metadata for image classification models. + This field is a member of `oneof`_ ``model_metadata``. text_classification_model_metadata (google.cloud.automl_v1.types.TextClassificationModelMetadata): Metadata for text classification models. + This field is a member of `oneof`_ ``model_metadata``. image_object_detection_model_metadata (google.cloud.automl_v1.types.ImageObjectDetectionModelMetadata): Metadata for image object detection models. + This field is a member of `oneof`_ ``model_metadata``. text_extraction_model_metadata (google.cloud.automl_v1.types.TextExtractionModelMetadata): Metadata for text extraction models. + This field is a member of `oneof`_ ``model_metadata``. text_sentiment_model_metadata (google.cloud.automl_v1.types.TextSentimentModelMetadata): Metadata for text sentiment models. + This field is a member of `oneof`_ ``model_metadata``. name (str): Output only. Resource name of the model. Format: ``projects/{project_id}/locations/{location_id}/models/{model_id}`` diff --git a/google/cloud/automl_v1/types/model_evaluation.py b/google/cloud/automl_v1/types/model_evaluation.py index 1530f449..db187bae 100644 --- a/google/cloud/automl_v1/types/model_evaluation.py +++ b/google/cloud/automl_v1/types/model_evaluation.py @@ -31,22 +31,34 @@ class ModelEvaluation(proto.Message): r"""Evaluation results of a model. + 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: classification_evaluation_metrics (google.cloud.automl_v1.types.ClassificationEvaluationMetrics): Model evaluation metrics for image, text, video and tables classification. Tables problem is considered a classification when the target column is CATEGORY DataType. + This field is a member of `oneof`_ ``metrics``. translation_evaluation_metrics (google.cloud.automl_v1.types.TranslationEvaluationMetrics): Model evaluation metrics for translation. + This field is a member of `oneof`_ ``metrics``. image_object_detection_evaluation_metrics (google.cloud.automl_v1.types.ImageObjectDetectionEvaluationMetrics): Model evaluation metrics for image object detection. + This field is a member of `oneof`_ ``metrics``. text_sentiment_evaluation_metrics (google.cloud.automl_v1.types.TextSentimentEvaluationMetrics): Evaluation metrics for text sentiment models. + This field is a member of `oneof`_ ``metrics``. text_extraction_evaluation_metrics (google.cloud.automl_v1.types.TextExtractionEvaluationMetrics): Evaluation metrics for text extraction models. + This field is a member of `oneof`_ ``metrics``. name (str): Output only. Resource name of the model evaluation. Format: diff --git a/google/cloud/automl_v1/types/operations.py b/google/cloud/automl_v1/types/operations.py index 7d6ec2d8..a18624d5 100644 --- a/google/cloud/automl_v1/types/operations.py +++ b/google/cloud/automl_v1/types/operations.py @@ -41,25 +41,41 @@ class OperationMetadata(proto.Message): r"""Metadata used across all long running operations returned by AutoML API. + 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: delete_details (google.cloud.automl_v1.types.DeleteOperationMetadata): Details of a Delete operation. + This field is a member of `oneof`_ ``details``. deploy_model_details (google.cloud.automl_v1.types.DeployModelOperationMetadata): Details of a DeployModel operation. + This field is a member of `oneof`_ ``details``. undeploy_model_details (google.cloud.automl_v1.types.UndeployModelOperationMetadata): Details of an UndeployModel operation. + This field is a member of `oneof`_ ``details``. create_model_details (google.cloud.automl_v1.types.CreateModelOperationMetadata): Details of CreateModel operation. + This field is a member of `oneof`_ ``details``. create_dataset_details (google.cloud.automl_v1.types.CreateDatasetOperationMetadata): Details of CreateDataset operation. + This field is a member of `oneof`_ ``details``. import_data_details (google.cloud.automl_v1.types.ImportDataOperationMetadata): Details of ImportData operation. + This field is a member of `oneof`_ ``details``. batch_predict_details (google.cloud.automl_v1.types.BatchPredictOperationMetadata): Details of BatchPredict operation. + This field is a member of `oneof`_ ``details``. export_data_details (google.cloud.automl_v1.types.ExportDataOperationMetadata): Details of ExportData operation. + This field is a member of `oneof`_ ``details``. export_model_details (google.cloud.automl_v1.types.ExportModelOperationMetadata): Details of ExportModel operation. + This field is a member of `oneof`_ ``details``. progress_percent (int): Output only. Progress of operation. Range: [0, 100]. Not used currently. @@ -179,11 +195,15 @@ class ExportDataOutputInfo(proto.Message): r"""Further describes this export data's output. Supplements [OutputConfig][google.cloud.automl.v1.OutputConfig]. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + Attributes: gcs_output_directory (str): The full path of the Google Cloud Storage directory created, into which the exported data is written. + This field is a member of `oneof`_ ``output_location``. """ gcs_output_directory = proto.Field( @@ -210,11 +230,15 @@ class BatchPredictOutputInfo(proto.Message): [BatchPredictOutputConfig][google.cloud.automl.v1.BatchPredictOutputConfig]. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + Attributes: gcs_output_directory (str): The full path of the Google Cloud Storage directory created, into which the prediction output is written. + This field is a member of `oneof`_ ``output_location``. """ gcs_output_directory = proto.Field( diff --git a/google/cloud/automl_v1/types/service.py b/google/cloud/automl_v1/types/service.py index 84a11881..0c72c544 100644 --- a/google/cloud/automl_v1/types/service.py +++ b/google/cloud/automl_v1/types/service.py @@ -341,13 +341,22 @@ class DeployModelRequest(proto.Message): r"""Request message for [AutoMl.DeployModel][google.cloud.automl.v1.AutoMl.DeployModel]. + 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: image_object_detection_model_deployment_metadata (google.cloud.automl_v1.types.ImageObjectDetectionModelDeploymentMetadata): Model deployment metadata specific to Image Object Detection. + This field is a member of `oneof`_ ``model_deployment_metadata``. image_classification_model_deployment_metadata (google.cloud.automl_v1.types.ImageClassificationModelDeploymentMetadata): Model deployment metadata specific to Image Classification. + This field is a member of `oneof`_ ``model_deployment_metadata``. name (str): Required. Resource name of the model to deploy. diff --git a/google/cloud/automl_v1/types/text_extraction.py b/google/cloud/automl_v1/types/text_extraction.py index 9cebeb8f..11243879 100644 --- a/google/cloud/automl_v1/types/text_extraction.py +++ b/google/cloud/automl_v1/types/text_extraction.py @@ -27,11 +27,14 @@ class TextExtractionAnnotation(proto.Message): r"""Annotation for identifying spans of text. + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + Attributes: text_segment (google.cloud.automl_v1.types.TextSegment): An entity annotation will set this, which is the part of the original text to which the annotation pertains. + This field is a member of `oneof`_ ``annotation``. score (float): Output only. A confidence estimate between 0.0 and 1.0. A higher value means greater diff --git a/google/cloud/automl_v1beta1/services/auto_ml/async_client.py b/google/cloud/automl_v1beta1/services/auto_ml/async_client.py index 12166f58..c19a86bd 100644 --- a/google/cloud/automl_v1beta1/services/auto_ml/async_client.py +++ b/google/cloud/automl_v1beta1/services/auto_ml/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.automl_v1beta1.services.auto_ml import pagers @@ -206,18 +208,18 @@ def __init__( async def create_dataset( self, - request: service.CreateDatasetRequest = None, + request: Union[service.CreateDatasetRequest, dict] = None, *, parent: str = None, dataset: gca_dataset.Dataset = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gca_dataset.Dataset: r"""Creates a dataset. Args: - request (:class:`google.cloud.automl_v1beta1.types.CreateDatasetRequest`): + request (Union[google.cloud.automl_v1beta1.types.CreateDatasetRequest, dict]): The request object. Request message for [AutoMl.CreateDataset][google.cloud.automl.v1beta1.AutoMl.CreateDataset]. parent (:class:`str`): @@ -287,17 +289,17 @@ async def create_dataset( async def get_dataset( self, - request: service.GetDatasetRequest = None, + request: Union[service.GetDatasetRequest, 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]] = (), ) -> dataset.Dataset: r"""Gets a dataset. Args: - request (:class:`google.cloud.automl_v1beta1.types.GetDatasetRequest`): + request (Union[google.cloud.automl_v1beta1.types.GetDatasetRequest, dict]): The request object. Request message for [AutoMl.GetDataset][google.cloud.automl.v1beta1.AutoMl.GetDataset]. name (:class:`str`): @@ -370,17 +372,17 @@ async def get_dataset( async def list_datasets( self, - request: service.ListDatasetsRequest = None, + request: Union[service.ListDatasetsRequest, 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.ListDatasetsAsyncPager: r"""Lists datasets in a project. Args: - request (:class:`google.cloud.automl_v1beta1.types.ListDatasetsRequest`): + request (Union[google.cloud.automl_v1beta1.types.ListDatasetsRequest, dict]): The request object. Request message for [AutoMl.ListDatasets][google.cloud.automl.v1beta1.AutoMl.ListDatasets]. parent (:class:`str`): @@ -460,17 +462,17 @@ async def list_datasets( async def update_dataset( self, - request: service.UpdateDatasetRequest = None, + request: Union[service.UpdateDatasetRequest, dict] = None, *, dataset: gca_dataset.Dataset = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gca_dataset.Dataset: r"""Updates a dataset. Args: - request (:class:`google.cloud.automl_v1beta1.types.UpdateDatasetRequest`): + request (Union[google.cloud.automl_v1beta1.types.UpdateDatasetRequest, dict]): The request object. Request message for [AutoMl.UpdateDataset][google.cloud.automl.v1beta1.AutoMl.UpdateDataset] dataset (:class:`google.cloud.automl_v1beta1.types.Dataset`): @@ -535,10 +537,10 @@ async def update_dataset( async def delete_dataset( self, - request: service.DeleteDatasetRequest = None, + request: Union[service.DeleteDatasetRequest, 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: @@ -549,7 +551,7 @@ async def delete_dataset( [metadata][google.longrunning.Operation.metadata] field. Args: - request (:class:`google.cloud.automl_v1beta1.types.DeleteDatasetRequest`): + request (Union[google.cloud.automl_v1beta1.types.DeleteDatasetRequest, dict]): The request object. Request message for [AutoMl.DeleteDataset][google.cloud.automl.v1beta1.AutoMl.DeleteDataset]. name (:class:`str`): @@ -641,11 +643,11 @@ async def delete_dataset( async def import_data( self, - request: service.ImportDataRequest = None, + request: Union[service.ImportDataRequest, dict] = None, *, name: str = None, input_config: io.InputConfig = 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: @@ -661,7 +663,7 @@ async def import_data( field when it completes. Args: - request (:class:`google.cloud.automl_v1beta1.types.ImportDataRequest`): + request (Union[google.cloud.automl_v1beta1.types.ImportDataRequest, dict]): The request object. Request message for [AutoMl.ImportData][google.cloud.automl.v1beta1.AutoMl.ImportData]. name (:class:`str`): @@ -754,11 +756,11 @@ async def import_data( async def export_data( self, - request: service.ExportDataRequest = None, + request: Union[service.ExportDataRequest, dict] = None, *, name: str = None, output_config: io.OutputConfig = 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: @@ -768,7 +770,7 @@ async def export_data( completes. Args: - request (:class:`google.cloud.automl_v1beta1.types.ExportDataRequest`): + request (Union[google.cloud.automl_v1beta1.types.ExportDataRequest, dict]): The request object. Request message for [AutoMl.ExportData][google.cloud.automl.v1beta1.AutoMl.ExportData]. name (:class:`str`): @@ -859,17 +861,17 @@ async def export_data( async def get_annotation_spec( self, - request: service.GetAnnotationSpecRequest = None, + request: Union[service.GetAnnotationSpecRequest, 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]] = (), ) -> annotation_spec.AnnotationSpec: r"""Gets an annotation spec. Args: - request (:class:`google.cloud.automl_v1beta1.types.GetAnnotationSpecRequest`): + request (Union[google.cloud.automl_v1beta1.types.GetAnnotationSpecRequest, dict]): The request object. Request message for [AutoMl.GetAnnotationSpec][google.cloud.automl.v1beta1.AutoMl.GetAnnotationSpec]. name (:class:`str`): @@ -938,17 +940,17 @@ async def get_annotation_spec( async def get_table_spec( self, - request: service.GetTableSpecRequest = None, + request: Union[service.GetTableSpecRequest, 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]] = (), ) -> table_spec.TableSpec: r"""Gets a table spec. Args: - request (:class:`google.cloud.automl_v1beta1.types.GetTableSpecRequest`): + request (Union[google.cloud.automl_v1beta1.types.GetTableSpecRequest, dict]): The request object. Request message for [AutoMl.GetTableSpec][google.cloud.automl.v1beta1.AutoMl.GetTableSpec]. name (:class:`str`): @@ -1027,17 +1029,17 @@ async def get_table_spec( async def list_table_specs( self, - request: service.ListTableSpecsRequest = None, + request: Union[service.ListTableSpecsRequest, 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.ListTableSpecsAsyncPager: r"""Lists table specs in a dataset. Args: - request (:class:`google.cloud.automl_v1beta1.types.ListTableSpecsRequest`): + request (Union[google.cloud.automl_v1beta1.types.ListTableSpecsRequest, dict]): The request object. Request message for [AutoMl.ListTableSpecs][google.cloud.automl.v1beta1.AutoMl.ListTableSpecs]. parent (:class:`str`): @@ -1117,17 +1119,17 @@ async def list_table_specs( async def update_table_spec( self, - request: service.UpdateTableSpecRequest = None, + request: Union[service.UpdateTableSpecRequest, dict] = None, *, table_spec: gca_table_spec.TableSpec = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gca_table_spec.TableSpec: r"""Updates a table spec. Args: - request (:class:`google.cloud.automl_v1beta1.types.UpdateTableSpecRequest`): + request (Union[google.cloud.automl_v1beta1.types.UpdateTableSpecRequest, dict]): The request object. Request message for [AutoMl.UpdateTableSpec][google.cloud.automl.v1beta1.AutoMl.UpdateTableSpec] table_spec (:class:`google.cloud.automl_v1beta1.types.TableSpec`): @@ -1198,17 +1200,17 @@ async def update_table_spec( async def get_column_spec( self, - request: service.GetColumnSpecRequest = None, + request: Union[service.GetColumnSpecRequest, 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]] = (), ) -> column_spec.ColumnSpec: r"""Gets a column spec. Args: - request (:class:`google.cloud.automl_v1beta1.types.GetColumnSpecRequest`): + request (Union[google.cloud.automl_v1beta1.types.GetColumnSpecRequest, dict]): The request object. Request message for [AutoMl.GetColumnSpec][google.cloud.automl.v1beta1.AutoMl.GetColumnSpec]. name (:class:`str`): @@ -1279,17 +1281,17 @@ async def get_column_spec( async def list_column_specs( self, - request: service.ListColumnSpecsRequest = None, + request: Union[service.ListColumnSpecsRequest, 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.ListColumnSpecsAsyncPager: r"""Lists column specs in a table spec. Args: - request (:class:`google.cloud.automl_v1beta1.types.ListColumnSpecsRequest`): + request (Union[google.cloud.automl_v1beta1.types.ListColumnSpecsRequest, dict]): The request object. Request message for [AutoMl.ListColumnSpecs][google.cloud.automl.v1beta1.AutoMl.ListColumnSpecs]. parent (:class:`str`): @@ -1369,17 +1371,17 @@ async def list_column_specs( async def update_column_spec( self, - request: service.UpdateColumnSpecRequest = None, + request: Union[service.UpdateColumnSpecRequest, dict] = None, *, column_spec: gca_column_spec.ColumnSpec = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gca_column_spec.ColumnSpec: r"""Updates a column spec. Args: - request (:class:`google.cloud.automl_v1beta1.types.UpdateColumnSpecRequest`): + request (Union[google.cloud.automl_v1beta1.types.UpdateColumnSpecRequest, dict]): The request object. Request message for [AutoMl.UpdateColumnSpec][google.cloud.automl.v1beta1.AutoMl.UpdateColumnSpec] column_spec (:class:`google.cloud.automl_v1beta1.types.ColumnSpec`): @@ -1442,11 +1444,11 @@ async def update_column_spec( async def create_model( self, - request: service.CreateModelRequest = None, + request: Union[service.CreateModelRequest, dict] = None, *, parent: str = None, model: gca_model.Model = 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: @@ -1457,7 +1459,7 @@ async def create_model( each annotation spec. Args: - request (:class:`google.cloud.automl_v1beta1.types.CreateModelRequest`): + request (Union[google.cloud.automl_v1beta1.types.CreateModelRequest, dict]): The request object. Request message for [AutoMl.CreateModel][google.cloud.automl.v1beta1.AutoMl.CreateModel]. parent (:class:`str`): @@ -1537,17 +1539,17 @@ async def create_model( async def get_model( self, - request: service.GetModelRequest = None, + request: Union[service.GetModelRequest, 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]] = (), ) -> model.Model: r"""Gets a model. Args: - request (:class:`google.cloud.automl_v1beta1.types.GetModelRequest`): + request (Union[google.cloud.automl_v1beta1.types.GetModelRequest, dict]): The request object. Request message for [AutoMl.GetModel][google.cloud.automl.v1beta1.AutoMl.GetModel]. name (:class:`str`): @@ -1616,17 +1618,17 @@ async def get_model( async def list_models( self, - request: service.ListModelsRequest = None, + request: Union[service.ListModelsRequest, 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.ListModelsAsyncPager: r"""Lists models. Args: - request (:class:`google.cloud.automl_v1beta1.types.ListModelsRequest`): + request (Union[google.cloud.automl_v1beta1.types.ListModelsRequest, dict]): The request object. Request message for [AutoMl.ListModels][google.cloud.automl.v1beta1.AutoMl.ListModels]. parent (:class:`str`): @@ -1706,10 +1708,10 @@ async def list_models( async def delete_model( self, - request: service.DeleteModelRequest = None, + request: Union[service.DeleteModelRequest, 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: @@ -1719,7 +1721,7 @@ async def delete_model( [metadata][google.longrunning.Operation.metadata] field. Args: - request (:class:`google.cloud.automl_v1beta1.types.DeleteModelRequest`): + request (Union[google.cloud.automl_v1beta1.types.DeleteModelRequest, dict]): The request object. Request message for [AutoMl.DeleteModel][google.cloud.automl.v1beta1.AutoMl.DeleteModel]. name (:class:`str`): @@ -1811,10 +1813,10 @@ async def delete_model( async def deploy_model( self, - request: service.DeployModelRequest = None, + request: Union[service.DeployModelRequest, 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: @@ -1835,7 +1837,7 @@ async def deploy_model( completes. Args: - request (:class:`google.cloud.automl_v1beta1.types.DeployModelRequest`): + request (Union[google.cloud.automl_v1beta1.types.DeployModelRequest, dict]): The request object. Request message for [AutoMl.DeployModel][google.cloud.automl.v1beta1.AutoMl.DeployModel]. name (:class:`str`): @@ -1917,10 +1919,10 @@ async def deploy_model( async def undeploy_model( self, - request: service.UndeployModelRequest = None, + request: Union[service.UndeployModelRequest, 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: @@ -1935,7 +1937,7 @@ async def undeploy_model( completes. Args: - request (:class:`google.cloud.automl_v1beta1.types.UndeployModelRequest`): + request (Union[google.cloud.automl_v1beta1.types.UndeployModelRequest, dict]): The request object. Request message for [AutoMl.UndeployModel][google.cloud.automl.v1beta1.AutoMl.UndeployModel]. name (:class:`str`): @@ -2017,11 +2019,11 @@ async def undeploy_model( async def export_model( self, - request: service.ExportModelRequest = None, + request: Union[service.ExportModelRequest, dict] = None, *, name: str = None, output_config: io.ModelExportOutputConfig = 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: @@ -2036,7 +2038,7 @@ async def export_model( completes. Args: - request (:class:`google.cloud.automl_v1beta1.types.ExportModelRequest`): + request (Union[google.cloud.automl_v1beta1.types.ExportModelRequest, dict]): The request object. Request message for [AutoMl.ExportModel][google.cloud.automl.v1beta1.AutoMl.ExportModel]. Models need to be enabled for exporting, otherwise an @@ -2129,11 +2131,11 @@ async def export_model( async def export_evaluated_examples( self, - request: service.ExportEvaluatedExamplesRequest = None, + request: Union[service.ExportEvaluatedExamplesRequest, dict] = None, *, name: str = None, output_config: io.ExportEvaluatedExamplesOutputConfig = 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: @@ -2154,7 +2156,7 @@ async def export_evaluated_examples( completes. Args: - request (:class:`google.cloud.automl_v1beta1.types.ExportEvaluatedExamplesRequest`): + request (Union[google.cloud.automl_v1beta1.types.ExportEvaluatedExamplesRequest, dict]): The request object. Request message for [AutoMl.ExportEvaluatedExamples][google.cloud.automl.v1beta1.AutoMl.ExportEvaluatedExamples]. name (:class:`str`): @@ -2246,17 +2248,17 @@ async def export_evaluated_examples( async def get_model_evaluation( self, - request: service.GetModelEvaluationRequest = None, + request: Union[service.GetModelEvaluationRequest, 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]] = (), ) -> model_evaluation.ModelEvaluation: r"""Gets a model evaluation. Args: - request (:class:`google.cloud.automl_v1beta1.types.GetModelEvaluationRequest`): + request (Union[google.cloud.automl_v1beta1.types.GetModelEvaluationRequest, dict]): The request object. Request message for [AutoMl.GetModelEvaluation][google.cloud.automl.v1beta1.AutoMl.GetModelEvaluation]. name (:class:`str`): @@ -2325,17 +2327,17 @@ async def get_model_evaluation( async def list_model_evaluations( self, - request: service.ListModelEvaluationsRequest = None, + request: Union[service.ListModelEvaluationsRequest, 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.ListModelEvaluationsAsyncPager: r"""Lists model evaluations. Args: - request (:class:`google.cloud.automl_v1beta1.types.ListModelEvaluationsRequest`): + request (Union[google.cloud.automl_v1beta1.types.ListModelEvaluationsRequest, dict]): The request object. Request message for [AutoMl.ListModelEvaluations][google.cloud.automl.v1beta1.AutoMl.ListModelEvaluations]. parent (:class:`str`): diff --git a/google/cloud/automl_v1beta1/services/auto_ml/client.py b/google/cloud/automl_v1beta1/services/auto_ml/client.py index 11ec38cc..631650c0 100644 --- a/google/cloud/automl_v1beta1/services/auto_ml/client.py +++ b/google/cloud/automl_v1beta1/services/auto_ml/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.automl_v1beta1.services.auto_ml import pagers @@ -492,7 +494,7 @@ def create_dataset( *, parent: str = None, dataset: gca_dataset.Dataset = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gca_dataset.Dataset: @@ -572,7 +574,7 @@ def get_dataset( request: Union[service.GetDatasetRequest, 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]] = (), ) -> dataset.Dataset: @@ -645,7 +647,7 @@ def list_datasets( request: Union[service.ListDatasetsRequest, 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.ListDatasetsPager: @@ -725,7 +727,7 @@ def update_dataset( request: Union[service.UpdateDatasetRequest, dict] = None, *, dataset: gca_dataset.Dataset = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gca_dataset.Dataset: @@ -800,7 +802,7 @@ def delete_dataset( request: Union[service.DeleteDatasetRequest, 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: @@ -897,7 +899,7 @@ def import_data( *, name: str = None, input_config: io.InputConfig = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -1010,7 +1012,7 @@ def export_data( *, name: str = None, output_config: io.OutputConfig = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -1114,7 +1116,7 @@ def get_annotation_spec( request: Union[service.GetAnnotationSpecRequest, 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]] = (), ) -> annotation_spec.AnnotationSpec: @@ -1183,7 +1185,7 @@ def get_table_spec( request: Union[service.GetTableSpecRequest, 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]] = (), ) -> table_spec.TableSpec: @@ -1262,7 +1264,7 @@ def list_table_specs( request: Union[service.ListTableSpecsRequest, 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.ListTableSpecsPager: @@ -1342,7 +1344,7 @@ def update_table_spec( request: Union[service.UpdateTableSpecRequest, dict] = None, *, table_spec: gca_table_spec.TableSpec = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gca_table_spec.TableSpec: @@ -1423,7 +1425,7 @@ def get_column_spec( request: Union[service.GetColumnSpecRequest, 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]] = (), ) -> column_spec.ColumnSpec: @@ -1494,7 +1496,7 @@ def list_column_specs( request: Union[service.ListColumnSpecsRequest, 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.ListColumnSpecsPager: @@ -1574,7 +1576,7 @@ def update_column_spec( request: Union[service.UpdateColumnSpecRequest, dict] = None, *, column_spec: gca_column_spec.ColumnSpec = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gca_column_spec.ColumnSpec: @@ -1648,7 +1650,7 @@ def create_model( *, parent: str = None, model: gca_model.Model = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -1742,7 +1744,7 @@ def get_model( request: Union[service.GetModelRequest, 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]] = (), ) -> model.Model: @@ -1811,7 +1813,7 @@ def list_models( request: Union[service.ListModelsRequest, 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.ListModelsPager: @@ -1891,7 +1893,7 @@ def delete_model( request: Union[service.DeleteModelRequest, 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: @@ -1986,7 +1988,7 @@ def deploy_model( request: Union[service.DeployModelRequest, 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: @@ -2092,7 +2094,7 @@ def undeploy_model( request: Union[service.UndeployModelRequest, 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: @@ -2193,7 +2195,7 @@ def export_model( *, name: str = None, output_config: io.ModelExportOutputConfig = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -2305,7 +2307,7 @@ def export_evaluated_examples( *, name: str = None, output_config: io.ExportEvaluatedExamplesOutputConfig = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -2423,7 +2425,7 @@ def get_model_evaluation( request: Union[service.GetModelEvaluationRequest, 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]] = (), ) -> model_evaluation.ModelEvaluation: @@ -2492,7 +2494,7 @@ def list_model_evaluations( request: Union[service.ListModelEvaluationsRequest, 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.ListModelEvaluationsPager: diff --git a/google/cloud/automl_v1beta1/services/auto_ml/transports/base.py b/google/cloud/automl_v1beta1/services/auto_ml/transports/base.py index adda41a8..8b05d97e 100644 --- a/google/cloud/automl_v1beta1/services/auto_ml/transports/base.py +++ b/google/cloud/automl_v1beta1/services/auto_ml/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 @@ -46,15 +45,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 AutoMlTransport(abc.ABC): """Abstract transport class for AutoMl.""" @@ -104,7 +94,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 @@ -137,29 +127,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 = { @@ -395,7 +362,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/automl_v1beta1/services/auto_ml/transports/grpc.py b/google/cloud/automl_v1beta1/services/auto_ml/transports/grpc.py index 518f935f..98731c7a 100644 --- a/google/cloud/automl_v1beta1/services/auto_ml/transports/grpc.py +++ b/google/cloud/automl_v1beta1/services/auto_ml/transports/grpc.py @@ -135,7 +135,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/automl_v1beta1/services/auto_ml/transports/grpc_asyncio.py b/google/cloud/automl_v1beta1/services/auto_ml/transports/grpc_asyncio.py index bd68cade..7584fd26 100644 --- a/google/cloud/automl_v1beta1/services/auto_ml/transports/grpc_asyncio.py +++ b/google/cloud/automl_v1beta1/services/auto_ml/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 @@ -182,7 +181,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/automl_v1beta1/services/prediction_service/async_client.py b/google/cloud/automl_v1beta1/services/prediction_service/async_client.py index 0f82485f..62131f62 100644 --- a/google/cloud/automl_v1beta1/services/prediction_service/async_client.py +++ b/google/cloud/automl_v1beta1/services/prediction_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.automl_v1beta1.types import annotation_payload @@ -172,12 +174,12 @@ def __init__( async def predict( self, - request: prediction_service.PredictRequest = None, + request: Union[prediction_service.PredictRequest, dict] = None, *, name: str = None, payload: data_items.ExamplePayload = None, params: Sequence[prediction_service.PredictRequest.ParamsEntry] = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> prediction_service.PredictResponse: @@ -204,7 +206,7 @@ async def predict( UTF-8 encoded. Args: - request (:class:`google.cloud.automl_v1beta1.types.PredictRequest`): + request (Union[google.cloud.automl_v1beta1.types.PredictRequest, dict]): The request object. Request message for [PredictionService.Predict][google.cloud.automl.v1beta1.PredictionService.Predict]. name (:class:`str`): @@ -306,13 +308,13 @@ async def predict( async def batch_predict( self, - request: prediction_service.BatchPredictRequest = None, + request: Union[prediction_service.BatchPredictRequest, dict] = None, *, name: str = None, input_config: io.BatchPredictInputConfig = None, output_config: io.BatchPredictOutputConfig = None, params: Sequence[prediction_service.BatchPredictRequest.ParamsEntry] = 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: @@ -335,7 +337,7 @@ async def batch_predict( - Tables Args: - request (:class:`google.cloud.automl_v1beta1.types.BatchPredictRequest`): + request (Union[google.cloud.automl_v1beta1.types.BatchPredictRequest, dict]): The request object. Request message for [PredictionService.BatchPredict][google.cloud.automl.v1beta1.PredictionService.BatchPredict]. name (:class:`str`): diff --git a/google/cloud/automl_v1beta1/services/prediction_service/client.py b/google/cloud/automl_v1beta1/services/prediction_service/client.py index 61c4a8d1..4cb9580d 100644 --- a/google/cloud/automl_v1beta1/services/prediction_service/client.py +++ b/google/cloud/automl_v1beta1/services/prediction_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.automl_v1beta1.types import annotation_payload @@ -365,7 +367,7 @@ def predict( name: str = None, payload: data_items.ExamplePayload = None, params: Sequence[prediction_service.PredictRequest.ParamsEntry] = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> prediction_service.PredictResponse: @@ -499,7 +501,7 @@ def batch_predict( input_config: io.BatchPredictInputConfig = None, output_config: io.BatchPredictOutputConfig = None, params: Sequence[prediction_service.BatchPredictRequest.ParamsEntry] = 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/automl_v1beta1/services/prediction_service/transports/base.py b/google/cloud/automl_v1beta1/services/prediction_service/transports/base.py index a711adb7..385fd157 100644 --- a/google/cloud/automl_v1beta1/services/prediction_service/transports/base.py +++ b/google/cloud/automl_v1beta1/services/prediction_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 @@ -37,15 +36,6 @@ except pkg_resources.DistributionNotFound: DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo() -try: - # google.auth.__version__ was added in 1.26.0 - _GOOGLE_AUTH_VERSION = google.auth.__version__ -except AttributeError: - try: # try pkg_resources if it is available - _GOOGLE_AUTH_VERSION = pkg_resources.get_distribution("google-auth").version - except pkg_resources.DistributionNotFound: # pragma: NO COVER - _GOOGLE_AUTH_VERSION = None - class PredictionServiceTransport(abc.ABC): """Abstract transport class for PredictionService.""" @@ -95,7 +85,7 @@ def __init__( host += ":443" self._host = host - scopes_kwargs = self._get_scopes_kwargs(self._host, scopes) + scopes_kwargs = {"scopes": scopes, "default_scopes": self.AUTH_SCOPES} # Save the scopes. self._scopes = scopes @@ -128,29 +118,6 @@ def __init__( # Save the credentials. self._credentials = credentials - # TODO(busunkim): This method is in the base transport - # to avoid duplicating code across the transport classes. These functions - # should be deleted once the minimum required versions of google-auth is increased. - - # TODO: Remove this function once google-auth >= 1.25.0 is required - @classmethod - def _get_scopes_kwargs( - cls, host: str, scopes: Optional[Sequence[str]] - ) -> Dict[str, Optional[Sequence[str]]]: - """Returns scopes kwargs to pass to google-auth methods depending on the google-auth version""" - - scopes_kwargs = {} - - if _GOOGLE_AUTH_VERSION and ( - packaging.version.parse(_GOOGLE_AUTH_VERSION) - >= packaging.version.parse("1.25.0") - ): - scopes_kwargs = {"scopes": scopes, "default_scopes": cls.AUTH_SCOPES} - else: - scopes_kwargs = {"scopes": scopes or cls.AUTH_SCOPES} - - return scopes_kwargs - def _prep_wrapped_messages(self, client_info): # Precompute the wrapped methods. self._wrapped_methods = { @@ -172,7 +139,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/automl_v1beta1/services/prediction_service/transports/grpc.py b/google/cloud/automl_v1beta1/services/prediction_service/transports/grpc.py index 50d4c1e3..a6d6f940 100644 --- a/google/cloud/automl_v1beta1/services/prediction_service/transports/grpc.py +++ b/google/cloud/automl_v1beta1/services/prediction_service/transports/grpc.py @@ -115,7 +115,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/automl_v1beta1/services/prediction_service/transports/grpc_asyncio.py b/google/cloud/automl_v1beta1/services/prediction_service/transports/grpc_asyncio.py index 13fb21fc..b1373afa 100644 --- a/google/cloud/automl_v1beta1/services/prediction_service/transports/grpc_asyncio.py +++ b/google/cloud/automl_v1beta1/services/prediction_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 @@ -162,7 +161,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/automl_v1beta1/types/annotation_payload.py b/google/cloud/automl_v1beta1/types/annotation_payload.py index ca714225..bf9c1146 100644 --- a/google/cloud/automl_v1beta1/types/annotation_payload.py +++ b/google/cloud/automl_v1beta1/types/annotation_payload.py @@ -31,26 +31,41 @@ class AnnotationPayload(proto.Message): r"""Contains annotation information that is relevant to AutoML. + 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: translation (google.cloud.automl_v1beta1.types.TranslationAnnotation): Annotation details for translation. + This field is a member of `oneof`_ ``detail``. classification (google.cloud.automl_v1beta1.types.ClassificationAnnotation): Annotation details for content or image classification. + This field is a member of `oneof`_ ``detail``. image_object_detection (google.cloud.automl_v1beta1.types.ImageObjectDetectionAnnotation): Annotation details for image object detection. + This field is a member of `oneof`_ ``detail``. video_classification (google.cloud.automl_v1beta1.types.VideoClassificationAnnotation): Annotation details for video classification. Returned for Video Classification predictions. + This field is a member of `oneof`_ ``detail``. video_object_tracking (google.cloud.automl_v1beta1.types.VideoObjectTrackingAnnotation): Annotation details for video object tracking. + This field is a member of `oneof`_ ``detail``. text_extraction (google.cloud.automl_v1beta1.types.TextExtractionAnnotation): Annotation details for text extraction. + This field is a member of `oneof`_ ``detail``. text_sentiment (google.cloud.automl_v1beta1.types.TextSentimentAnnotation): Annotation details for text sentiment. + This field is a member of `oneof`_ ``detail``. tables (google.cloud.automl_v1beta1.types.TablesAnnotation): Annotation details for Tables. + This field is a member of `oneof`_ ``detail``. annotation_spec_id (str): Output only . The resource ID of the annotation spec that this annotation pertains diff --git a/google/cloud/automl_v1beta1/types/data_items.py b/google/cloud/automl_v1beta1/types/data_items.py index 3328f97f..f97cd13b 100644 --- a/google/cloud/automl_v1beta1/types/data_items.py +++ b/google/cloud/automl_v1beta1/types/data_items.py @@ -38,14 +38,23 @@ class Image(proto.Message): r"""A representation of an image. Only images up to 30MB in size are supported. + 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: image_bytes (bytes): Image content represented as a stream of bytes. Note: As with all ``bytes`` fields, protobuffers use a pure binary representation, whereas JSON representations use base64. + This field is a member of `oneof`_ ``data``. input_config (google.cloud.automl_v1beta1.types.InputConfig): An input config specifying the content of the image. + This field is a member of `oneof`_ ``data``. thumbnail_uri (str): Output only. HTTP URI to the thumbnail image. """ @@ -219,15 +228,26 @@ class Row(proto.Message): class ExamplePayload(proto.Message): r"""Example data used for training or prediction. + 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: image (google.cloud.automl_v1beta1.types.Image): Example image. + This field is a member of `oneof`_ ``payload``. text_snippet (google.cloud.automl_v1beta1.types.TextSnippet): Example text. + This field is a member of `oneof`_ ``payload``. document (google.cloud.automl_v1beta1.types.Document): Example document. + This field is a member of `oneof`_ ``payload``. row (google.cloud.automl_v1beta1.types.Row): Example relational table row. + This field is a member of `oneof`_ ``payload``. """ image = proto.Field(proto.MESSAGE, number=1, oneof="payload", message="Image",) diff --git a/google/cloud/automl_v1beta1/types/data_stats.py b/google/cloud/automl_v1beta1/types/data_stats.py index be4e3f9f..fecc4584 100644 --- a/google/cloud/automl_v1beta1/types/data_stats.py +++ b/google/cloud/automl_v1beta1/types/data_stats.py @@ -35,19 +35,32 @@ class DataStats(proto.Message): r"""The data statistics of a series of values that share the same DataType. + 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: float64_stats (google.cloud.automl_v1beta1.types.Float64Stats): The statistics for FLOAT64 DataType. + This field is a member of `oneof`_ ``stats``. string_stats (google.cloud.automl_v1beta1.types.StringStats): The statistics for STRING DataType. + This field is a member of `oneof`_ ``stats``. timestamp_stats (google.cloud.automl_v1beta1.types.TimestampStats): The statistics for TIMESTAMP DataType. + This field is a member of `oneof`_ ``stats``. array_stats (google.cloud.automl_v1beta1.types.ArrayStats): The statistics for ARRAY DataType. + This field is a member of `oneof`_ ``stats``. struct_stats (google.cloud.automl_v1beta1.types.StructStats): The statistics for STRUCT DataType. + This field is a member of `oneof`_ ``stats``. category_stats (google.cloud.automl_v1beta1.types.CategoryStats): The statistics for CATEGORY DataType. + This field is a member of `oneof`_ ``stats``. distinct_value_count (int): The number of distinct values. null_value_count (int): diff --git a/google/cloud/automl_v1beta1/types/data_types.py b/google/cloud/automl_v1beta1/types/data_types.py index 877cd4fe..3e98e018 100644 --- a/google/cloud/automl_v1beta1/types/data_types.py +++ b/google/cloud/automl_v1beta1/types/data_types.py @@ -39,18 +39,27 @@ class DataType(proto.Message): r"""Indicated the type of data that can be stored in a structured data entity (e.g. a table). + 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: list_element_type (google.cloud.automl_v1beta1.types.DataType): If [type_code][google.cloud.automl.v1beta1.DataType.type_code] == [ARRAY][google.cloud.automl.v1beta1.TypeCode.ARRAY], then ``list_element_type`` is the type of the elements. + This field is a member of `oneof`_ ``details``. struct_type (google.cloud.automl_v1beta1.types.StructType): If [type_code][google.cloud.automl.v1beta1.DataType.type_code] == [STRUCT][google.cloud.automl.v1beta1.TypeCode.STRUCT], then ``struct_type`` provides type information for the struct's fields. + This field is a member of `oneof`_ ``details``. time_format (str): If [type_code][google.cloud.automl.v1beta1.DataType.type_code] @@ -67,6 +76,7 @@ class DataType(proto.Message): the Unix epoch); or be written in ``strftime`` syntax. If time_format is not set, then the default format as described on the type_code is used. + This field is a member of `oneof`_ ``details``. type_code (google.cloud.automl_v1beta1.types.TypeCode): Required. The [TypeCode][google.cloud.automl.v1beta1.TypeCode] for this diff --git a/google/cloud/automl_v1beta1/types/dataset.py b/google/cloud/automl_v1beta1/types/dataset.py index 3cba50bc..f9e086b1 100644 --- a/google/cloud/automl_v1beta1/types/dataset.py +++ b/google/cloud/automl_v1beta1/types/dataset.py @@ -33,32 +33,48 @@ class Dataset(proto.Message): (ML) problem. A workspace contains examples that may be annotated. + 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: translation_dataset_metadata (google.cloud.automl_v1beta1.types.TranslationDatasetMetadata): Metadata for a dataset used for translation. + This field is a member of `oneof`_ ``dataset_metadata``. image_classification_dataset_metadata (google.cloud.automl_v1beta1.types.ImageClassificationDatasetMetadata): Metadata for a dataset used for image classification. + This field is a member of `oneof`_ ``dataset_metadata``. text_classification_dataset_metadata (google.cloud.automl_v1beta1.types.TextClassificationDatasetMetadata): Metadata for a dataset used for text classification. + This field is a member of `oneof`_ ``dataset_metadata``. image_object_detection_dataset_metadata (google.cloud.automl_v1beta1.types.ImageObjectDetectionDatasetMetadata): Metadata for a dataset used for image object detection. + This field is a member of `oneof`_ ``dataset_metadata``. video_classification_dataset_metadata (google.cloud.automl_v1beta1.types.VideoClassificationDatasetMetadata): Metadata for a dataset used for video classification. + This field is a member of `oneof`_ ``dataset_metadata``. video_object_tracking_dataset_metadata (google.cloud.automl_v1beta1.types.VideoObjectTrackingDatasetMetadata): Metadata for a dataset used for video object tracking. + This field is a member of `oneof`_ ``dataset_metadata``. text_extraction_dataset_metadata (google.cloud.automl_v1beta1.types.TextExtractionDatasetMetadata): Metadata for a dataset used for text extraction. + This field is a member of `oneof`_ ``dataset_metadata``. text_sentiment_dataset_metadata (google.cloud.automl_v1beta1.types.TextSentimentDatasetMetadata): Metadata for a dataset used for text sentiment. + This field is a member of `oneof`_ ``dataset_metadata``. tables_dataset_metadata (google.cloud.automl_v1beta1.types.TablesDatasetMetadata): Metadata for a dataset used for Tables. + This field is a member of `oneof`_ ``dataset_metadata``. name (str): Output only. The resource name of the dataset. Form: ``projects/{project_id}/locations/{location_id}/datasets/{dataset_id}`` diff --git a/google/cloud/automl_v1beta1/types/io.py b/google/cloud/automl_v1beta1/types/io.py index d7d6be0f..44f29a97 100644 --- a/google/cloud/automl_v1beta1/types/io.py +++ b/google/cloud/automl_v1beta1/types/io.py @@ -335,13 +335,22 @@ class InputConfig(proto.Message): success or failure the per-row failures, up to a certain count cap, is listed in Operation.metadata.partial_failures. + 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: gcs_source (google.cloud.automl_v1beta1.types.GcsSource): The Google Cloud Storage location for the input content. In ImportData, the gcs_source points to a csv with structure described in the comment. + This field is a member of `oneof`_ ``source``. bigquery_source (google.cloud.automl_v1beta1.types.BigQuerySource): The BigQuery location for the input content. + This field is a member of `oneof`_ ``source``. params (Sequence[google.cloud.automl_v1beta1.types.InputConfig.ParamsEntry]): Additional domain-specific parameters describing the semantic of the imported data, any string must be up to @@ -516,12 +525,21 @@ class BatchPredictInputConfig(proto.Message): overall success or failure the per-row failures, up to a certain count cap, will be listed in Operation.metadata.partial_failures. + 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: gcs_source (google.cloud.automl_v1beta1.types.GcsSource): The Google Cloud Storage location for the input content. + This field is a member of `oneof`_ ``source``. bigquery_source (google.cloud.automl_v1beta1.types.BigQuerySource): The BigQuery location for the input content. + This field is a member of `oneof`_ ``source``. """ gcs_source = proto.Field( @@ -574,6 +592,13 @@ class OutputConfig(proto.Message): dataset a new table called ``primary_table`` will be created, and filled with precisely the same data as this obtained on import. + 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: gcs_destination (google.cloud.automl_v1beta1.types.GcsDestination): The Google Cloud Storage location where the output is to be @@ -582,9 +607,11 @@ class OutputConfig(proto.Message): new directory will be created with name: export_data-- where timestamp is in YYYY-MM-DDThh:mm:ss.sssZ ISO-8601 format. All export output will be written into that directory. + This field is a member of `oneof`_ ``destination``. bigquery_destination (google.cloud.automl_v1beta1.types.BigQueryDestination): The BigQuery location where the output is to be written to. + This field is a member of `oneof`_ ``destination``. """ gcs_destination = proto.Field( @@ -883,13 +910,22 @@ class BatchPredictOutputConfig(proto.Message): represented as a STRUCT, and containing only ``code`` and ``message``. + 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: gcs_destination (google.cloud.automl_v1beta1.types.GcsDestination): The Google Cloud Storage location of the directory where the output is to be written to. + This field is a member of `oneof`_ ``destination``. bigquery_destination (google.cloud.automl_v1beta1.types.BigQueryDestination): The BigQuery location where the output is to be written to. + This field is a member of `oneof`_ ``destination``. """ gcs_destination = proto.Field( @@ -903,6 +939,13 @@ class BatchPredictOutputConfig(proto.Message): class ModelExportOutputConfig(proto.Message): r"""Output configuration for ModelExport Action. + 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: gcs_destination (google.cloud.automl_v1beta1.types.GcsDestination): The Google Cloud Storage location where the model is to be @@ -915,6 +958,7 @@ class ModelExportOutputConfig(proto.Message): YYYY-MM-DDThh:mm:ss.sssZ ISO-8601 format, will be created. Inside the model and any of its supporting files will be written. + This field is a member of `oneof`_ ``destination``. gcr_destination (google.cloud.automl_v1beta1.types.GcrDestination): The GCR location where model image is to be pushed to. This location may only be set for the @@ -922,6 +966,7 @@ class ModelExportOutputConfig(proto.Message): The model image will be created under the given URI. + This field is a member of `oneof`_ ``destination``. model_format (str): The format in which the model must be exported. The available, and default, formats depend on the problem and @@ -1029,10 +1074,14 @@ class ExportEvaluatedExamplesOutputConfig(proto.Message): represented as STRUCT-s, containing [TablesAnnotation][google.cloud.automl.v1beta1.TablesAnnotation]. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + Attributes: bigquery_destination (google.cloud.automl_v1beta1.types.BigQueryDestination): The BigQuery location where the output is to be written to. + This field is a member of `oneof`_ ``destination``. """ bigquery_destination = proto.Field( diff --git a/google/cloud/automl_v1beta1/types/model.py b/google/cloud/automl_v1beta1/types/model.py index af38c584..34851363 100644 --- a/google/cloud/automl_v1beta1/types/model.py +++ b/google/cloud/automl_v1beta1/types/model.py @@ -29,25 +29,41 @@ class Model(proto.Message): r"""API proto representing a trained machine learning model. + 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: translation_model_metadata (google.cloud.automl_v1beta1.types.TranslationModelMetadata): Metadata for translation models. + This field is a member of `oneof`_ ``model_metadata``. image_classification_model_metadata (google.cloud.automl_v1beta1.types.ImageClassificationModelMetadata): Metadata for image classification models. + This field is a member of `oneof`_ ``model_metadata``. text_classification_model_metadata (google.cloud.automl_v1beta1.types.TextClassificationModelMetadata): Metadata for text classification models. + This field is a member of `oneof`_ ``model_metadata``. image_object_detection_model_metadata (google.cloud.automl_v1beta1.types.ImageObjectDetectionModelMetadata): Metadata for image object detection models. + This field is a member of `oneof`_ ``model_metadata``. video_classification_model_metadata (google.cloud.automl_v1beta1.types.VideoClassificationModelMetadata): Metadata for video classification models. + This field is a member of `oneof`_ ``model_metadata``. video_object_tracking_model_metadata (google.cloud.automl_v1beta1.types.VideoObjectTrackingModelMetadata): Metadata for video object tracking models. + This field is a member of `oneof`_ ``model_metadata``. text_extraction_model_metadata (google.cloud.automl_v1beta1.types.TextExtractionModelMetadata): Metadata for text extraction models. + This field is a member of `oneof`_ ``model_metadata``. tables_model_metadata (google.cloud.automl_v1beta1.types.TablesModelMetadata): Metadata for Tables models. + This field is a member of `oneof`_ ``model_metadata``. text_sentiment_model_metadata (google.cloud.automl_v1beta1.types.TextSentimentModelMetadata): Metadata for text sentiment models. + This field is a member of `oneof`_ ``model_metadata``. name (str): Output only. Resource name of the model. Format: ``projects/{project_id}/locations/{location_id}/models/{model_id}`` diff --git a/google/cloud/automl_v1beta1/types/model_evaluation.py b/google/cloud/automl_v1beta1/types/model_evaluation.py index a140006f..0d9b31df 100644 --- a/google/cloud/automl_v1beta1/types/model_evaluation.py +++ b/google/cloud/automl_v1beta1/types/model_evaluation.py @@ -32,30 +32,44 @@ class ModelEvaluation(proto.Message): r"""Evaluation results of a model. + 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: classification_evaluation_metrics (google.cloud.automl_v1beta1.types.ClassificationEvaluationMetrics): Model evaluation metrics for image, text, video and tables classification. Tables problem is considered a classification when the target column is CATEGORY DataType. + This field is a member of `oneof`_ ``metrics``. regression_evaluation_metrics (google.cloud.automl_v1beta1.types.RegressionEvaluationMetrics): Model evaluation metrics for Tables regression. Tables problem is considered a regression when the target column has FLOAT64 DataType. + This field is a member of `oneof`_ ``metrics``. translation_evaluation_metrics (google.cloud.automl_v1beta1.types.TranslationEvaluationMetrics): Model evaluation metrics for translation. + This field is a member of `oneof`_ ``metrics``. image_object_detection_evaluation_metrics (google.cloud.automl_v1beta1.types.ImageObjectDetectionEvaluationMetrics): Model evaluation metrics for image object detection. + This field is a member of `oneof`_ ``metrics``. video_object_tracking_evaluation_metrics (google.cloud.automl_v1beta1.types.VideoObjectTrackingEvaluationMetrics): Model evaluation metrics for video object tracking. + This field is a member of `oneof`_ ``metrics``. text_sentiment_evaluation_metrics (google.cloud.automl_v1beta1.types.TextSentimentEvaluationMetrics): Evaluation metrics for text sentiment models. + This field is a member of `oneof`_ ``metrics``. text_extraction_evaluation_metrics (google.cloud.automl_v1beta1.types.TextExtractionEvaluationMetrics): Evaluation metrics for text extraction models. + This field is a member of `oneof`_ ``metrics``. name (str): Output only. Resource name of the model evaluation. Format: diff --git a/google/cloud/automl_v1beta1/types/operations.py b/google/cloud/automl_v1beta1/types/operations.py index aa6bfc02..2384ceeb 100644 --- a/google/cloud/automl_v1beta1/types/operations.py +++ b/google/cloud/automl_v1beta1/types/operations.py @@ -41,25 +41,41 @@ class OperationMetadata(proto.Message): r"""Metadata used across all long running operations returned by AutoML API. + 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: delete_details (google.cloud.automl_v1beta1.types.DeleteOperationMetadata): Details of a Delete operation. + This field is a member of `oneof`_ ``details``. deploy_model_details (google.cloud.automl_v1beta1.types.DeployModelOperationMetadata): Details of a DeployModel operation. + This field is a member of `oneof`_ ``details``. undeploy_model_details (google.cloud.automl_v1beta1.types.UndeployModelOperationMetadata): Details of an UndeployModel operation. + This field is a member of `oneof`_ ``details``. create_model_details (google.cloud.automl_v1beta1.types.CreateModelOperationMetadata): Details of CreateModel operation. + This field is a member of `oneof`_ ``details``. import_data_details (google.cloud.automl_v1beta1.types.ImportDataOperationMetadata): Details of ImportData operation. + This field is a member of `oneof`_ ``details``. batch_predict_details (google.cloud.automl_v1beta1.types.BatchPredictOperationMetadata): Details of BatchPredict operation. + This field is a member of `oneof`_ ``details``. export_data_details (google.cloud.automl_v1beta1.types.ExportDataOperationMetadata): Details of ExportData operation. + This field is a member of `oneof`_ ``details``. export_model_details (google.cloud.automl_v1beta1.types.ExportModelOperationMetadata): Details of ExportModel operation. + This field is a member of `oneof`_ ``details``. export_evaluated_examples_details (google.cloud.automl_v1beta1.types.ExportEvaluatedExamplesOperationMetadata): Details of ExportEvaluatedExamples operation. + This field is a member of `oneof`_ ``details``. progress_percent (int): Output only. Progress of operation. Range: [0, 100]. Not used currently. @@ -174,15 +190,24 @@ class ExportDataOutputInfo(proto.Message): r"""Further describes this export data's output. Supplements [OutputConfig][google.cloud.automl.v1beta1.OutputConfig]. + 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: gcs_output_directory (str): The full path of the Google Cloud Storage directory created, into which the exported data is written. + This field is a member of `oneof`_ ``output_location``. bigquery_output_dataset (str): The path of the BigQuery dataset created, in bq://projectId.bqDatasetId format, into which the exported data is written. + This field is a member of `oneof`_ ``output_location``. """ gcs_output_directory = proto.Field( @@ -212,15 +237,24 @@ class BatchPredictOutputInfo(proto.Message): [BatchPredictOutputConfig][google.cloud.automl.v1beta1.BatchPredictOutputConfig]. + 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: gcs_output_directory (str): The full path of the Google Cloud Storage directory created, into which the prediction output is written. + This field is a member of `oneof`_ ``output_location``. bigquery_output_dataset (str): The path of the BigQuery dataset created, in bq://projectId.bqDatasetId format, into which the prediction output is written. + This field is a member of `oneof`_ ``output_location``. """ gcs_output_directory = proto.Field( diff --git a/google/cloud/automl_v1beta1/types/service.py b/google/cloud/automl_v1beta1/types/service.py index 887e7441..2487e9eb 100644 --- a/google/cloud/automl_v1beta1/types/service.py +++ b/google/cloud/automl_v1beta1/types/service.py @@ -511,13 +511,22 @@ class DeployModelRequest(proto.Message): r"""Request message for [AutoMl.DeployModel][google.cloud.automl.v1beta1.AutoMl.DeployModel]. + 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: image_object_detection_model_deployment_metadata (google.cloud.automl_v1beta1.types.ImageObjectDetectionModelDeploymentMetadata): Model deployment metadata specific to Image Object Detection. + This field is a member of `oneof`_ ``model_deployment_metadata``. image_classification_model_deployment_metadata (google.cloud.automl_v1beta1.types.ImageClassificationModelDeploymentMetadata): Model deployment metadata specific to Image Classification. + This field is a member of `oneof`_ ``model_deployment_metadata``. name (str): Required. Resource name of the model to deploy. diff --git a/google/cloud/automl_v1beta1/types/tables.py b/google/cloud/automl_v1beta1/types/tables.py index d6662e63..f24af474 100644 --- a/google/cloud/automl_v1beta1/types/tables.py +++ b/google/cloud/automl_v1beta1/types/tables.py @@ -117,15 +117,24 @@ class TablesDatasetMetadata(proto.Message): class TablesModelMetadata(proto.Message): r"""Model metadata specific to AutoML Tables. + 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: optimization_objective_recall_value (float): Required when optimization_objective is "MAXIMIZE_PRECISION_AT_RECALL". Must be between 0 and 1, inclusive. + This field is a member of `oneof`_ ``additional_optimization_objective_config``. optimization_objective_precision_value (float): Required when optimization_objective is "MAXIMIZE_RECALL_AT_PRECISION". Must be between 0 and 1, inclusive. + This field is a member of `oneof`_ ``additional_optimization_objective_config``. target_column_spec (google.cloud.automl_v1beta1.types.ColumnSpec): Column spec of the dataset's primary table's column the model is predicting. Snapshotted when model creation diff --git a/google/cloud/automl_v1beta1/types/text_extraction.py b/google/cloud/automl_v1beta1/types/text_extraction.py index f1570d08..cf8f811f 100644 --- a/google/cloud/automl_v1beta1/types/text_extraction.py +++ b/google/cloud/automl_v1beta1/types/text_extraction.py @@ -27,11 +27,14 @@ class TextExtractionAnnotation(proto.Message): r"""Annotation for identifying spans of text. + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + Attributes: text_segment (google.cloud.automl_v1beta1.types.TextSegment): An entity annotation will set this, which is the part of the original text to which the annotation pertains. + This field is a member of `oneof`_ ``annotation``. score (float): Output only. A confidence estimate between 0.0 and 1.0. A higher value means greater diff --git a/setup.py b/setup.py index d51d50fd..02a5e6f2 100644 --- a/setup.py +++ b/setup.py @@ -25,9 +25,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.10.0", - "packaging >= 14.3", ] extras = { "libcst": "libcst >= 0.2.5", diff --git a/testing/constraints-3.6.txt b/testing/constraints-3.6.txt index 734ef7b0..a0c23e88 100644 --- a/testing/constraints-3.6.txt +++ b/testing/constraints-3.6.txt @@ -5,10 +5,8 @@ # # 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.10.0 libcst==0.2.5 pandas==0.23.0 google-cloud-storage==1.18.0 -packaging==14.3 -google-auth==1.24.0 # TODO: remove when google-auth>=1.25.0 si transitively required through google-api-core diff --git a/tests/unit/gapic/automl_v1/test_auto_ml.py b/tests/unit/gapic/automl_v1/test_auto_ml.py index a458606a..94431974 100644 --- a/tests/unit/gapic/automl_v1/test_auto_ml.py +++ b/tests/unit/gapic/automl_v1/test_auto_ml.py @@ -15,7 +15,6 @@ # import os import mock -import packaging.version import grpc from grpc.experimental import aio @@ -39,7 +38,6 @@ from google.cloud.automl_v1.services.auto_ml import AutoMlClient from google.cloud.automl_v1.services.auto_ml import pagers from google.cloud.automl_v1.services.auto_ml import transports -from google.cloud.automl_v1.services.auto_ml.transports.base import _GOOGLE_AUTH_VERSION from google.cloud.automl_v1.types import annotation_spec from google.cloud.automl_v1.types import classification from google.cloud.automl_v1.types import dataset @@ -63,20 +61,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" @@ -211,7 +195,7 @@ def test_auto_ml_client_client_options(client_class, transport_class, transport_ 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, @@ -228,7 +212,7 @@ def test_auto_ml_client_client_options(client_class, transport_class, transport_ 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, @@ -245,7 +229,7 @@ def test_auto_ml_client_client_options(client_class, transport_class, transport_ 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, @@ -274,7 +258,7 @@ def test_auto_ml_client_client_options(client_class, transport_class, transport_ 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, @@ -329,7 +313,7 @@ def test_auto_ml_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 @@ -371,7 +355,7 @@ def test_auto_ml_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, @@ -393,7 +377,7 @@ def test_auto_ml_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, @@ -420,7 +404,7 @@ def test_auto_ml_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, @@ -447,7 +431,7 @@ def test_auto_ml_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", @@ -4901,7 +4885,6 @@ def test_auto_ml_base_transport(): transport.operations_client -@requires_google_auth_gte_1_25_0 def test_auto_ml_base_transport_with_credentials_file(): # Instantiate the base transport with a credentials file with mock.patch.object( @@ -4922,26 +4905,6 @@ def test_auto_ml_base_transport_with_credentials_file(): ) -@requires_google_auth_lt_1_25_0 -def test_auto_ml_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.automl_v1.services.auto_ml.transports.AutoMlTransport._prep_wrapped_messages" - ) as Transport: - Transport.return_value = None - load_creds.return_value = (ga_credentials.AnonymousCredentials(), None) - transport = transports.AutoMlTransport( - 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_auto_ml_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( @@ -4953,7 +4916,6 @@ def test_auto_ml_base_transport_with_adc(): adc.assert_called_once() -@requires_google_auth_gte_1_25_0 def test_auto_ml_auth_adc(): # If no credentials are provided, we should use ADC credentials. with mock.patch.object(google.auth, "default", autospec=True) as adc: @@ -4966,23 +4928,10 @@ def test_auto_ml_auth_adc(): ) -@requires_google_auth_lt_1_25_0 -def test_auto_ml_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) - AutoMlClient() - adc.assert_called_once_with( - scopes=("https://www.googleapis.com/auth/cloud-platform",), - quota_project_id=None, - ) - - @pytest.mark.parametrize( "transport_class", [transports.AutoMlGrpcTransport, transports.AutoMlGrpcAsyncIOTransport,], ) -@requires_google_auth_gte_1_25_0 def test_auto_ml_transport_auth_adc(transport_class): # If credentials and host are not provided, the transport class should use # ADC credentials. @@ -4996,23 +4945,6 @@ def test_auto_ml_transport_auth_adc(transport_class): ) -@pytest.mark.parametrize( - "transport_class", - [transports.AutoMlGrpcTransport, transports.AutoMlGrpcAsyncIOTransport,], -) -@requires_google_auth_lt_1_25_0 -def test_auto_ml_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/automl_v1/test_prediction_service.py b/tests/unit/gapic/automl_v1/test_prediction_service.py index 6fa2f1b8..bbcfb3e4 100644 --- a/tests/unit/gapic/automl_v1/test_prediction_service.py +++ b/tests/unit/gapic/automl_v1/test_prediction_service.py @@ -15,7 +15,6 @@ # import os import mock -import packaging.version import grpc from grpc.experimental import aio @@ -40,9 +39,6 @@ ) from google.cloud.automl_v1.services.prediction_service import PredictionServiceClient from google.cloud.automl_v1.services.prediction_service import transports -from google.cloud.automl_v1.services.prediction_service.transports.base import ( - _GOOGLE_AUTH_VERSION, -) from google.cloud.automl_v1.types import annotation_payload from google.cloud.automl_v1.types import data_items from google.cloud.automl_v1.types import geometry @@ -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" @@ -226,7 +208,7 @@ def test_prediction_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, @@ -243,7 +225,7 @@ def test_prediction_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, @@ -260,7 +242,7 @@ def test_prediction_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, @@ -289,7 +271,7 @@ def test_prediction_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, @@ -358,7 +340,7 @@ def test_prediction_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 @@ -400,7 +382,7 @@ def test_prediction_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, @@ -422,7 +404,7 @@ def test_prediction_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, @@ -453,7 +435,7 @@ def test_prediction_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, @@ -484,7 +466,7 @@ def test_prediction_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", @@ -1120,7 +1102,6 @@ def test_prediction_service_base_transport(): transport.operations_client -@requires_google_auth_gte_1_25_0 def test_prediction_service_base_transport_with_credentials_file(): # Instantiate the base transport with a credentials file with mock.patch.object( @@ -1141,26 +1122,6 @@ def test_prediction_service_base_transport_with_credentials_file(): ) -@requires_google_auth_lt_1_25_0 -def test_prediction_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.automl_v1.services.prediction_service.transports.PredictionServiceTransport._prep_wrapped_messages" - ) as Transport: - Transport.return_value = None - load_creds.return_value = (ga_credentials.AnonymousCredentials(), None) - transport = transports.PredictionServiceTransport( - 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_prediction_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( @@ -1172,7 +1133,6 @@ def test_prediction_service_base_transport_with_adc(): adc.assert_called_once() -@requires_google_auth_gte_1_25_0 def test_prediction_service_auth_adc(): # If no credentials are provided, we should use ADC credentials. with mock.patch.object(google.auth, "default", autospec=True) as adc: @@ -1185,18 +1145,6 @@ def test_prediction_service_auth_adc(): ) -@requires_google_auth_lt_1_25_0 -def test_prediction_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) - PredictionServiceClient() - adc.assert_called_once_with( - scopes=("https://www.googleapis.com/auth/cloud-platform",), - quota_project_id=None, - ) - - @pytest.mark.parametrize( "transport_class", [ @@ -1204,7 +1152,6 @@ def test_prediction_service_auth_adc_old_google_auth(): transports.PredictionServiceGrpcAsyncIOTransport, ], ) -@requires_google_auth_gte_1_25_0 def test_prediction_service_transport_auth_adc(transport_class): # If credentials and host are not provided, the transport class should use # ADC credentials. @@ -1218,26 +1165,6 @@ def test_prediction_service_transport_auth_adc(transport_class): ) -@pytest.mark.parametrize( - "transport_class", - [ - transports.PredictionServiceGrpcTransport, - transports.PredictionServiceGrpcAsyncIOTransport, - ], -) -@requires_google_auth_lt_1_25_0 -def test_prediction_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/automl_v1beta1/test_auto_ml.py b/tests/unit/gapic/automl_v1beta1/test_auto_ml.py index 4b90ba5f..5be6ec51 100644 --- a/tests/unit/gapic/automl_v1beta1/test_auto_ml.py +++ b/tests/unit/gapic/automl_v1beta1/test_auto_ml.py @@ -15,7 +15,6 @@ # import os import mock -import packaging.version import grpc from grpc.experimental import aio @@ -39,9 +38,6 @@ from google.cloud.automl_v1beta1.services.auto_ml import AutoMlClient from google.cloud.automl_v1beta1.services.auto_ml import pagers from google.cloud.automl_v1beta1.services.auto_ml import transports -from google.cloud.automl_v1beta1.services.auto_ml.transports.base import ( - _GOOGLE_AUTH_VERSION, -) from google.cloud.automl_v1beta1.types import annotation_spec from google.cloud.automl_v1beta1.types import classification from google.cloud.automl_v1beta1.types import column_spec @@ -74,20 +70,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" @@ -222,7 +204,7 @@ def test_auto_ml_client_client_options(client_class, transport_class, transport_ 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, @@ -239,7 +221,7 @@ def test_auto_ml_client_client_options(client_class, transport_class, transport_ 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, @@ -256,7 +238,7 @@ def test_auto_ml_client_client_options(client_class, transport_class, transport_ 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, @@ -285,7 +267,7 @@ def test_auto_ml_client_client_options(client_class, transport_class, transport_ 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, @@ -340,7 +322,7 @@ def test_auto_ml_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 @@ -382,7 +364,7 @@ def test_auto_ml_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, @@ -404,7 +386,7 @@ def test_auto_ml_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, @@ -431,7 +413,7 @@ def test_auto_ml_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, @@ -458,7 +440,7 @@ def test_auto_ml_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", @@ -6500,7 +6482,6 @@ def test_auto_ml_base_transport(): transport.operations_client -@requires_google_auth_gte_1_25_0 def test_auto_ml_base_transport_with_credentials_file(): # Instantiate the base transport with a credentials file with mock.patch.object( @@ -6521,26 +6502,6 @@ def test_auto_ml_base_transport_with_credentials_file(): ) -@requires_google_auth_lt_1_25_0 -def test_auto_ml_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.automl_v1beta1.services.auto_ml.transports.AutoMlTransport._prep_wrapped_messages" - ) as Transport: - Transport.return_value = None - load_creds.return_value = (ga_credentials.AnonymousCredentials(), None) - transport = transports.AutoMlTransport( - 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_auto_ml_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( @@ -6552,7 +6513,6 @@ def test_auto_ml_base_transport_with_adc(): adc.assert_called_once() -@requires_google_auth_gte_1_25_0 def test_auto_ml_auth_adc(): # If no credentials are provided, we should use ADC credentials. with mock.patch.object(google.auth, "default", autospec=True) as adc: @@ -6565,23 +6525,10 @@ def test_auto_ml_auth_adc(): ) -@requires_google_auth_lt_1_25_0 -def test_auto_ml_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) - AutoMlClient() - adc.assert_called_once_with( - scopes=("https://www.googleapis.com/auth/cloud-platform",), - quota_project_id=None, - ) - - @pytest.mark.parametrize( "transport_class", [transports.AutoMlGrpcTransport, transports.AutoMlGrpcAsyncIOTransport,], ) -@requires_google_auth_gte_1_25_0 def test_auto_ml_transport_auth_adc(transport_class): # If credentials and host are not provided, the transport class should use # ADC credentials. @@ -6595,23 +6542,6 @@ def test_auto_ml_transport_auth_adc(transport_class): ) -@pytest.mark.parametrize( - "transport_class", - [transports.AutoMlGrpcTransport, transports.AutoMlGrpcAsyncIOTransport,], -) -@requires_google_auth_lt_1_25_0 -def test_auto_ml_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/automl_v1beta1/test_prediction_service.py b/tests/unit/gapic/automl_v1beta1/test_prediction_service.py index 6a106577..8dfca224 100644 --- a/tests/unit/gapic/automl_v1beta1/test_prediction_service.py +++ b/tests/unit/gapic/automl_v1beta1/test_prediction_service.py @@ -15,7 +15,6 @@ # import os import mock -import packaging.version import grpc from grpc.experimental import aio @@ -42,9 +41,6 @@ PredictionServiceClient, ) from google.cloud.automl_v1beta1.services.prediction_service import transports -from google.cloud.automl_v1beta1.services.prediction_service.transports.base import ( - _GOOGLE_AUTH_VERSION, -) from google.cloud.automl_v1beta1.types import annotation_payload from google.cloud.automl_v1beta1.types import data_items from google.cloud.automl_v1beta1.types import geometry @@ -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" @@ -229,7 +211,7 @@ def test_prediction_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, @@ -246,7 +228,7 @@ def test_prediction_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, @@ -263,7 +245,7 @@ def test_prediction_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, @@ -292,7 +274,7 @@ def test_prediction_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, @@ -361,7 +343,7 @@ def test_prediction_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 @@ -403,7 +385,7 @@ def test_prediction_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, @@ -425,7 +407,7 @@ def test_prediction_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, @@ -456,7 +438,7 @@ def test_prediction_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, @@ -487,7 +469,7 @@ def test_prediction_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", @@ -1123,7 +1105,6 @@ def test_prediction_service_base_transport(): transport.operations_client -@requires_google_auth_gte_1_25_0 def test_prediction_service_base_transport_with_credentials_file(): # Instantiate the base transport with a credentials file with mock.patch.object( @@ -1144,26 +1125,6 @@ def test_prediction_service_base_transport_with_credentials_file(): ) -@requires_google_auth_lt_1_25_0 -def test_prediction_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.automl_v1beta1.services.prediction_service.transports.PredictionServiceTransport._prep_wrapped_messages" - ) as Transport: - Transport.return_value = None - load_creds.return_value = (ga_credentials.AnonymousCredentials(), None) - transport = transports.PredictionServiceTransport( - 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_prediction_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( @@ -1175,7 +1136,6 @@ def test_prediction_service_base_transport_with_adc(): adc.assert_called_once() -@requires_google_auth_gte_1_25_0 def test_prediction_service_auth_adc(): # If no credentials are provided, we should use ADC credentials. with mock.patch.object(google.auth, "default", autospec=True) as adc: @@ -1188,18 +1148,6 @@ def test_prediction_service_auth_adc(): ) -@requires_google_auth_lt_1_25_0 -def test_prediction_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) - PredictionServiceClient() - adc.assert_called_once_with( - scopes=("https://www.googleapis.com/auth/cloud-platform",), - quota_project_id=None, - ) - - @pytest.mark.parametrize( "transport_class", [ @@ -1207,7 +1155,6 @@ def test_prediction_service_auth_adc_old_google_auth(): transports.PredictionServiceGrpcAsyncIOTransport, ], ) -@requires_google_auth_gte_1_25_0 def test_prediction_service_transport_auth_adc(transport_class): # If credentials and host are not provided, the transport class should use # ADC credentials. @@ -1221,26 +1168,6 @@ def test_prediction_service_transport_auth_adc(transport_class): ) -@pytest.mark.parametrize( - "transport_class", - [ - transports.PredictionServiceGrpcTransport, - transports.PredictionServiceGrpcAsyncIOTransport, - ], -) -@requires_google_auth_lt_1_25_0 -def test_prediction_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", [