From 33299cea2e1565540d831421431bef6fef653ecc Mon Sep 17 00:00:00 2001 From: ohmayr Date: Mon, 23 Mar 2026 22:15:20 +0000 Subject: [PATCH] feat: generate libraries --- .librarian/state.yaml | 2 +- .../spanner_admin_database_v1/__init__.py | 142 +++++++++--------- .../services/database_admin/__init__.py | 2 +- .../services/database_admin/async_client.py | 33 ++-- .../services/database_admin/client.py | 30 ++-- .../services/database_admin/pagers.py | 20 +-- .../database_admin/transports/__init__.py | 4 +- .../database_admin/transports/base.py | 22 +-- .../database_admin/transports/grpc.py | 24 +-- .../database_admin/transports/grpc_asyncio.py | 28 ++-- .../database_admin/transports/rest.py | 37 +++-- .../database_admin/transports/rest_base.py | 24 +-- .../types/__init__.py | 9 +- .../spanner_admin_database_v1/types/backup.py | 5 +- .../types/backup_schedule.py | 5 +- .../spanner_admin_database_v1/types/common.py | 4 +- .../types/spanner_database_admin.py | 7 +- .../spanner_admin_instance_v1/__init__.py | 94 ++++++------ .../services/instance_admin/__init__.py | 2 +- .../services/instance_admin/async_client.py | 20 +-- .../services/instance_admin/client.py | 17 +-- .../services/instance_admin/pagers.py | 14 +- .../instance_admin/transports/__init__.py | 4 +- .../instance_admin/transports/base.py | 16 +- .../instance_admin/transports/grpc.py | 18 ++- .../instance_admin/transports/grpc_asyncio.py | 22 +-- .../instance_admin/transports/rest.py | 31 ++-- .../instance_admin/transports/rest_base.py | 16 +- .../types/__init__.py | 6 +- .../spanner_admin_instance_v1/types/common.py | 4 +- .../types/spanner_instance_admin.py | 90 ++++++++++- .../spanner_v1/services/spanner/__init__.py | 2 +- .../services/spanner/async_client.py | 35 ++--- .../spanner_v1/services/spanner/client.py | 32 ++-- .../spanner_v1/services/spanner/pagers.py | 11 +- .../services/spanner/transports/__init__.py | 4 +- .../services/spanner/transports/base.py | 17 +-- .../services/spanner/transports/grpc.py | 21 ++- .../spanner/transports/grpc_asyncio.py | 25 ++- .../services/spanner/transports/rest.py | 34 +++-- .../services/spanner/transports/rest_base.py | 22 +-- google/cloud/spanner_v1/types/__init__.py | 39 +++-- .../cloud/spanner_v1/types/change_stream.py | 5 +- .../cloud/spanner_v1/types/commit_response.py | 17 ++- google/cloud/spanner_v1/types/keys.py | 4 +- google/cloud/spanner_v1/types/location.py | 18 +-- google/cloud/spanner_v1/types/mutation.py | 5 +- google/cloud/spanner_v1/types/query_plan.py | 4 +- google/cloud/spanner_v1/types/result_set.py | 16 +- google/cloud/spanner_v1/types/spanner.py | 131 ++++++++++------ google/cloud/spanner_v1/types/transaction.py | 66 +++++--- google/cloud/spanner_v1/types/type.py | 1 + noxfile.py | 82 ++-------- tests/unit/gapic/conftest.py | 20 --- .../test_database_admin.py | 65 ++++---- .../test_instance_admin.py | 53 ++++--- tests/unit/gapic/spanner_v1/test_spanner.py | 52 +++---- 57 files changed, 845 insertions(+), 688 deletions(-) delete mode 100644 tests/unit/gapic/conftest.py diff --git a/.librarian/state.yaml b/.librarian/state.yaml index bc132b9050..6060e237da 100644 --- a/.librarian/state.yaml +++ b/.librarian/state.yaml @@ -2,7 +2,7 @@ image: us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/python-li libraries: - id: google-cloud-spanner version: 3.63.0 - last_generated_commit: a17b84add8318f780fcc8a027815d5fee644b9f7 + last_generated_commit: 0b3dec847f1045e47991c1539d4c69d8b025cfe8 apis: - path: google/spanner/admin/instance/v1 service_config: spanner.yaml diff --git a/google/cloud/spanner_admin_database_v1/__init__.py b/google/cloud/spanner_admin_database_v1/__init__.py index bc3c6d5d50..42b15fe254 100644 --- a/google/cloud/spanner_admin_database_v1/__init__.py +++ b/google/cloud/spanner_admin_database_v1/__init__.py @@ -13,11 +13,10 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import sys +from google.cloud.spanner_admin_database_v1 import gapic_version as package_version import google.api_core as api_core - -from google.cloud.spanner_admin_database_v1 import gapic_version as package_version +import sys __version__ = package_version.__version__ @@ -28,76 +27,71 @@ # this code path once we drop support for Python 3.7 import importlib_metadata as metadata -from .services.database_admin import DatabaseAdminAsyncClient, DatabaseAdminClient -from .types.backup import ( - Backup, - BackupInfo, - BackupInstancePartition, - CopyBackupEncryptionConfig, - CopyBackupMetadata, - CopyBackupRequest, - CreateBackupEncryptionConfig, - CreateBackupMetadata, - CreateBackupRequest, - DeleteBackupRequest, - FullBackupSpec, - GetBackupRequest, - IncrementalBackupSpec, - ListBackupOperationsRequest, - ListBackupOperationsResponse, - ListBackupsRequest, - ListBackupsResponse, - UpdateBackupRequest, -) -from .types.backup_schedule import ( - BackupSchedule, - BackupScheduleSpec, - CreateBackupScheduleRequest, - CrontabSpec, - DeleteBackupScheduleRequest, - GetBackupScheduleRequest, - ListBackupSchedulesRequest, - ListBackupSchedulesResponse, - UpdateBackupScheduleRequest, -) -from .types.common import ( - DatabaseDialect, - EncryptionConfig, - EncryptionInfo, - OperationProgress, -) -from .types.spanner_database_admin import ( - AddSplitPointsRequest, - AddSplitPointsResponse, - CreateDatabaseMetadata, - CreateDatabaseRequest, - Database, - DatabaseRole, - DdlStatementActionInfo, - DropDatabaseRequest, - GetDatabaseDdlRequest, - GetDatabaseDdlResponse, - GetDatabaseRequest, - InternalUpdateGraphOperationRequest, - InternalUpdateGraphOperationResponse, - ListDatabaseOperationsRequest, - ListDatabaseOperationsResponse, - ListDatabaseRolesRequest, - ListDatabaseRolesResponse, - ListDatabasesRequest, - ListDatabasesResponse, - OptimizeRestoredDatabaseMetadata, - RestoreDatabaseEncryptionConfig, - RestoreDatabaseMetadata, - RestoreDatabaseRequest, - RestoreInfo, - RestoreSourceType, - SplitPoints, - UpdateDatabaseDdlMetadata, - UpdateDatabaseDdlRequest, - UpdateDatabaseMetadata, - UpdateDatabaseRequest, -) + +from .services.database_admin import DatabaseAdminClient +from .services.database_admin import DatabaseAdminAsyncClient + +from .types.backup import Backup +from .types.backup import BackupInfo +from .types.backup import BackupInstancePartition +from .types.backup import CopyBackupEncryptionConfig +from .types.backup import CopyBackupMetadata +from .types.backup import CopyBackupRequest +from .types.backup import CreateBackupEncryptionConfig +from .types.backup import CreateBackupMetadata +from .types.backup import CreateBackupRequest +from .types.backup import DeleteBackupRequest +from .types.backup import FullBackupSpec +from .types.backup import GetBackupRequest +from .types.backup import IncrementalBackupSpec +from .types.backup import ListBackupOperationsRequest +from .types.backup import ListBackupOperationsResponse +from .types.backup import ListBackupsRequest +from .types.backup import ListBackupsResponse +from .types.backup import UpdateBackupRequest +from .types.backup_schedule import BackupSchedule +from .types.backup_schedule import BackupScheduleSpec +from .types.backup_schedule import CreateBackupScheduleRequest +from .types.backup_schedule import CrontabSpec +from .types.backup_schedule import DeleteBackupScheduleRequest +from .types.backup_schedule import GetBackupScheduleRequest +from .types.backup_schedule import ListBackupSchedulesRequest +from .types.backup_schedule import ListBackupSchedulesResponse +from .types.backup_schedule import UpdateBackupScheduleRequest +from .types.common import EncryptionConfig +from .types.common import EncryptionInfo +from .types.common import OperationProgress +from .types.common import DatabaseDialect +from .types.spanner_database_admin import AddSplitPointsRequest +from .types.spanner_database_admin import AddSplitPointsResponse +from .types.spanner_database_admin import CreateDatabaseMetadata +from .types.spanner_database_admin import CreateDatabaseRequest +from .types.spanner_database_admin import Database +from .types.spanner_database_admin import DatabaseRole +from .types.spanner_database_admin import DdlStatementActionInfo +from .types.spanner_database_admin import DropDatabaseRequest +from .types.spanner_database_admin import GetDatabaseDdlRequest +from .types.spanner_database_admin import GetDatabaseDdlResponse +from .types.spanner_database_admin import GetDatabaseRequest +from .types.spanner_database_admin import InternalUpdateGraphOperationRequest +from .types.spanner_database_admin import InternalUpdateGraphOperationResponse +from .types.spanner_database_admin import ListDatabaseOperationsRequest +from .types.spanner_database_admin import ListDatabaseOperationsResponse +from .types.spanner_database_admin import ListDatabaseRolesRequest +from .types.spanner_database_admin import ListDatabaseRolesResponse +from .types.spanner_database_admin import ListDatabasesRequest +from .types.spanner_database_admin import ListDatabasesResponse +from .types.spanner_database_admin import OptimizeRestoredDatabaseMetadata +from .types.spanner_database_admin import RestoreDatabaseEncryptionConfig +from .types.spanner_database_admin import RestoreDatabaseMetadata +from .types.spanner_database_admin import RestoreDatabaseRequest +from .types.spanner_database_admin import RestoreInfo +from .types.spanner_database_admin import SplitPoints +from .types.spanner_database_admin import UpdateDatabaseDdlMetadata +from .types.spanner_database_admin import UpdateDatabaseDdlRequest +from .types.spanner_database_admin import UpdateDatabaseMetadata +from .types.spanner_database_admin import UpdateDatabaseRequest +from .types.spanner_database_admin import RestoreSourceType if hasattr(api_core, "check_python_version") and hasattr( api_core, "check_dependency_versions" @@ -108,8 +102,8 @@ # An older version of api_core is installed which does not define the # functions above. We do equivalent checks manually. try: - import sys import warnings + import sys _py_version_str = sys.version.split()[0] _package_label = "google.cloud.spanner_admin_database_v1" diff --git a/google/cloud/spanner_admin_database_v1/services/database_admin/__init__.py b/google/cloud/spanner_admin_database_v1/services/database_admin/__init__.py index af2ac7d91d..580a7ed2a2 100644 --- a/google/cloud/spanner_admin_database_v1/services/database_admin/__init__.py +++ b/google/cloud/spanner_admin_database_v1/services/database_admin/__init__.py @@ -13,8 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # -from .async_client import DatabaseAdminAsyncClient from .client import DatabaseAdminClient +from .async_client import DatabaseAdminAsyncClient __all__ = ( "DatabaseAdminClient", diff --git a/google/cloud/spanner_admin_database_v1/services/database_admin/async_client.py b/google/cloud/spanner_admin_database_v1/services/database_admin/async_client.py index 1a5b4896d3..0e08065a7d 100644 --- a/google/cloud/spanner_admin_database_v1/services/database_admin/async_client.py +++ b/google/cloud/spanner_admin_database_v1/services/database_admin/async_client.py @@ -13,12 +13,12 @@ # See the License for the specific language governing permissions and # limitations under the License. # -from collections import OrderedDict import logging as std_logging +from collections import OrderedDict import re from typing import ( - Callable, Dict, + Callable, Mapping, MutableMapping, MutableSequence, @@ -30,15 +30,16 @@ ) import uuid +from google.cloud.spanner_admin_database_v1 import gapic_version as package_version + +from google.api_core.client_options import ClientOptions from google.api_core import exceptions as core_exceptions from google.api_core import gapic_v1 from google.api_core import retry_async as retries -from google.api_core.client_options import ClientOptions from google.auth import credentials as ga_credentials # type: ignore from google.oauth2 import service_account # type: ignore import google.protobuf -from google.cloud.spanner_admin_database_v1 import gapic_version as package_version try: OptionalRetry = Union[retries.AsyncRetry, gapic_v1.method._MethodDefault, None] @@ -47,26 +48,26 @@ from google.api_core import operation # type: ignore from google.api_core import operation_async # type: ignore +from google.cloud.spanner_admin_database_v1.services.database_admin import pagers +from google.cloud.spanner_admin_database_v1.types import backup +from google.cloud.spanner_admin_database_v1.types import backup as gsad_backup +from google.cloud.spanner_admin_database_v1.types import backup_schedule +from google.cloud.spanner_admin_database_v1.types import ( + backup_schedule as gsad_backup_schedule, +) +from google.cloud.spanner_admin_database_v1.types import common +from google.cloud.spanner_admin_database_v1.types import spanner_database_admin from google.iam.v1 import iam_policy_pb2 # type: ignore from google.iam.v1 import policy_pb2 # type: ignore from google.longrunning import operations_pb2 # type: ignore +from google.longrunning import operations_pb2 # type: ignore from google.protobuf import duration_pb2 # type: ignore from google.protobuf import empty_pb2 # type: ignore from google.protobuf import field_mask_pb2 # type: ignore from google.protobuf import timestamp_pb2 # type: ignore - -from google.cloud.spanner_admin_database_v1.services.database_admin import pagers -from google.cloud.spanner_admin_database_v1.types import common, spanner_database_admin -from google.cloud.spanner_admin_database_v1.types import ( - backup_schedule as gsad_backup_schedule, -) -from google.cloud.spanner_admin_database_v1.types import backup -from google.cloud.spanner_admin_database_v1.types import backup as gsad_backup -from google.cloud.spanner_admin_database_v1.types import backup_schedule - -from .client import DatabaseAdminClient -from .transports.base import DEFAULT_CLIENT_INFO, DatabaseAdminTransport +from .transports.base import DatabaseAdminTransport, DEFAULT_CLIENT_INFO from .transports.grpc_asyncio import DatabaseAdminGrpcAsyncIOTransport +from .client import DatabaseAdminClient try: from google.api_core import client_logging # type: ignore diff --git a/google/cloud/spanner_admin_database_v1/services/database_admin/client.py b/google/cloud/spanner_admin_database_v1/services/database_admin/client.py index 9238484626..057aa677f8 100644 --- a/google/cloud/spanner_admin_database_v1/services/database_admin/client.py +++ b/google/cloud/spanner_admin_database_v1/services/database_admin/client.py @@ -20,8 +20,8 @@ import os import re from typing import ( - Callable, Dict, + Callable, Mapping, MutableMapping, MutableSequence, @@ -35,19 +35,19 @@ import uuid import warnings +from google.cloud.spanner_admin_database_v1 import gapic_version as package_version + from google.api_core import client_options as client_options_lib from google.api_core import exceptions as core_exceptions from google.api_core import gapic_v1 from google.api_core import retry as retries from google.auth import credentials as ga_credentials # type: ignore -from google.auth.exceptions import MutualTLSChannelError # type: ignore from google.auth.transport import mtls # type: ignore from google.auth.transport.grpc import SslCredentials # type: ignore +from google.auth.exceptions import MutualTLSChannelError # type: ignore from google.oauth2 import service_account # type: ignore import google.protobuf -from google.cloud.spanner_admin_database_v1 import gapic_version as package_version - try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -64,24 +64,24 @@ from google.api_core import operation # type: ignore from google.api_core import operation_async # type: ignore +from google.cloud.spanner_admin_database_v1.services.database_admin import pagers +from google.cloud.spanner_admin_database_v1.types import backup +from google.cloud.spanner_admin_database_v1.types import backup as gsad_backup +from google.cloud.spanner_admin_database_v1.types import backup_schedule +from google.cloud.spanner_admin_database_v1.types import ( + backup_schedule as gsad_backup_schedule, +) +from google.cloud.spanner_admin_database_v1.types import common +from google.cloud.spanner_admin_database_v1.types import spanner_database_admin from google.iam.v1 import iam_policy_pb2 # type: ignore from google.iam.v1 import policy_pb2 # type: ignore from google.longrunning import operations_pb2 # type: ignore +from google.longrunning import operations_pb2 # type: ignore from google.protobuf import duration_pb2 # type: ignore from google.protobuf import empty_pb2 # type: ignore from google.protobuf import field_mask_pb2 # type: ignore from google.protobuf import timestamp_pb2 # type: ignore - -from google.cloud.spanner_admin_database_v1.services.database_admin import pagers -from google.cloud.spanner_admin_database_v1.types import common, spanner_database_admin -from google.cloud.spanner_admin_database_v1.types import ( - backup_schedule as gsad_backup_schedule, -) -from google.cloud.spanner_admin_database_v1.types import backup -from google.cloud.spanner_admin_database_v1.types import backup as gsad_backup -from google.cloud.spanner_admin_database_v1.types import backup_schedule - -from .transports.base import DEFAULT_CLIENT_INFO, DatabaseAdminTransport +from .transports.base import DatabaseAdminTransport, DEFAULT_CLIENT_INFO from .transports.grpc import DatabaseAdminGrpcTransport from .transports.grpc_asyncio import DatabaseAdminGrpcAsyncIOTransport from .transports.rest import DatabaseAdminRestTransport diff --git a/google/cloud/spanner_admin_database_v1/services/database_admin/pagers.py b/google/cloud/spanner_admin_database_v1/services/database_admin/pagers.py index 233e4c1aed..c9e2e14d52 100644 --- a/google/cloud/spanner_admin_database_v1/services/database_admin/pagers.py +++ b/google/cloud/spanner_admin_database_v1/services/database_admin/pagers.py @@ -13,22 +13,21 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from google.api_core import gapic_v1 +from google.api_core import retry as retries +from google.api_core import retry_async as retries_async from typing import ( Any, AsyncIterator, Awaitable, Callable, - Iterator, - Optional, Sequence, Tuple, + Optional, + Iterator, Union, ) -from google.api_core import gapic_v1 -from google.api_core import retry as retries -from google.api_core import retry_async as retries_async - try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] OptionalAsyncRetry = Union[ @@ -38,14 +37,11 @@ OptionalRetry = Union[retries.Retry, object, None] # type: ignore OptionalAsyncRetry = Union[retries_async.AsyncRetry, object, None] # type: ignore +from google.cloud.spanner_admin_database_v1.types import backup +from google.cloud.spanner_admin_database_v1.types import backup_schedule +from google.cloud.spanner_admin_database_v1.types import spanner_database_admin from google.longrunning import operations_pb2 # type: ignore -from google.cloud.spanner_admin_database_v1.types import ( - backup, - backup_schedule, - spanner_database_admin, -) - class ListDatabasesPager: """A pager for iterating through ``list_databases`` requests. diff --git a/google/cloud/spanner_admin_database_v1/services/database_admin/transports/__init__.py b/google/cloud/spanner_admin_database_v1/services/database_admin/transports/__init__.py index e630837fe9..23ba04ea21 100644 --- a/google/cloud/spanner_admin_database_v1/services/database_admin/transports/__init__.py +++ b/google/cloud/spanner_admin_database_v1/services/database_admin/transports/__init__.py @@ -19,7 +19,9 @@ from .base import DatabaseAdminTransport from .grpc import DatabaseAdminGrpcTransport from .grpc_asyncio import DatabaseAdminGrpcAsyncIOTransport -from .rest import DatabaseAdminRestInterceptor, DatabaseAdminRestTransport +from .rest import DatabaseAdminRestTransport +from .rest import DatabaseAdminRestInterceptor + # Compile a registry of transports. _transport_registry = OrderedDict() # type: Dict[str, Type[DatabaseAdminTransport]] diff --git a/google/cloud/spanner_admin_database_v1/services/database_admin/transports/base.py b/google/cloud/spanner_admin_database_v1/services/database_admin/transports/base.py index 6981ed7d24..16a075d983 100644 --- a/google/cloud/spanner_admin_database_v1/services/database_admin/transports/base.py +++ b/google/cloud/spanner_admin_database_v1/services/database_admin/transports/base.py @@ -16,27 +16,29 @@ import abc from typing import Awaitable, Callable, Dict, Optional, Sequence, Union +from google.cloud.spanner_admin_database_v1 import gapic_version as package_version + +import google.auth # type: ignore import google.api_core from google.api_core import exceptions as core_exceptions -from google.api_core import gapic_v1, operations_v1 +from google.api_core import gapic_v1 from google.api_core import retry as retries -import google.auth # type: ignore +from google.api_core import operations_v1 from google.auth import credentials as ga_credentials # type: ignore -from google.iam.v1 import iam_policy_pb2 # type: ignore -from google.iam.v1 import policy_pb2 # type: ignore -from google.longrunning import operations_pb2 # type: ignore from google.oauth2 import service_account # type: ignore import google.protobuf -from google.protobuf import empty_pb2 # type: ignore -from google.cloud.spanner_admin_database_v1 import gapic_version as package_version -from google.cloud.spanner_admin_database_v1.types import ( - backup_schedule as gsad_backup_schedule, -) from google.cloud.spanner_admin_database_v1.types import backup from google.cloud.spanner_admin_database_v1.types import backup as gsad_backup from google.cloud.spanner_admin_database_v1.types import backup_schedule +from google.cloud.spanner_admin_database_v1.types import ( + backup_schedule as gsad_backup_schedule, +) from google.cloud.spanner_admin_database_v1.types import spanner_database_admin +from google.iam.v1 import iam_policy_pb2 # type: ignore +from google.iam.v1 import policy_pb2 # type: ignore +from google.longrunning import operations_pb2 # type: ignore +from google.protobuf import empty_pb2 # type: ignore DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( gapic_version=package_version.__version__ diff --git a/google/cloud/spanner_admin_database_v1/services/database_admin/transports/grpc.py b/google/cloud/spanner_admin_database_v1/services/database_admin/transports/grpc.py index 8af5613f55..0888d9af16 100644 --- a/google/cloud/spanner_admin_database_v1/services/database_admin/transports/grpc.py +++ b/google/cloud/spanner_admin_database_v1/services/database_admin/transports/grpc.py @@ -16,31 +16,33 @@ import json import logging as std_logging import pickle -from typing import Callable, Dict, Optional, Sequence, Tuple, Union import warnings +from typing import Callable, Dict, Optional, Sequence, Tuple, Union -from google.api_core import gapic_v1, grpc_helpers, operations_v1 +from google.api_core import grpc_helpers +from google.api_core import operations_v1 +from google.api_core import gapic_v1 import google.auth # type: ignore from google.auth import credentials as ga_credentials # type: ignore from google.auth.transport.grpc import SslCredentials # type: ignore -from google.iam.v1 import iam_policy_pb2 # type: ignore -from google.iam.v1 import policy_pb2 # type: ignore -from google.longrunning import operations_pb2 # type: ignore -from google.protobuf import empty_pb2 # type: ignore from google.protobuf.json_format import MessageToJson import google.protobuf.message + import grpc # type: ignore import proto # type: ignore -from google.cloud.spanner_admin_database_v1.types import ( - backup_schedule as gsad_backup_schedule, -) from google.cloud.spanner_admin_database_v1.types import backup from google.cloud.spanner_admin_database_v1.types import backup as gsad_backup from google.cloud.spanner_admin_database_v1.types import backup_schedule +from google.cloud.spanner_admin_database_v1.types import ( + backup_schedule as gsad_backup_schedule, +) from google.cloud.spanner_admin_database_v1.types import spanner_database_admin - -from .base import DEFAULT_CLIENT_INFO, DatabaseAdminTransport +from google.iam.v1 import iam_policy_pb2 # type: ignore +from google.iam.v1 import policy_pb2 # type: ignore +from google.longrunning import operations_pb2 # type: ignore +from google.protobuf import empty_pb2 # type: ignore +from .base import DatabaseAdminTransport, DEFAULT_CLIENT_INFO try: from google.api_core import client_logging # type: ignore diff --git a/google/cloud/spanner_admin_database_v1/services/database_admin/transports/grpc_asyncio.py b/google/cloud/spanner_admin_database_v1/services/database_admin/transports/grpc_asyncio.py index c0b020e355..145c6ebf03 100644 --- a/google/cloud/spanner_admin_database_v1/services/database_admin/transports/grpc_asyncio.py +++ b/google/cloud/spanner_admin_database_v1/services/database_admin/transports/grpc_asyncio.py @@ -15,35 +15,37 @@ # import inspect import json -import logging as std_logging import pickle -from typing import Awaitable, Callable, Dict, Optional, Sequence, Tuple, Union +import logging as std_logging import warnings +from typing import Awaitable, Callable, Dict, Optional, Sequence, Tuple, Union +from google.api_core import gapic_v1 +from google.api_core import grpc_helpers_async from google.api_core import exceptions as core_exceptions -from google.api_core import gapic_v1, grpc_helpers_async, operations_v1 from google.api_core import retry_async as retries +from google.api_core import operations_v1 from google.auth import credentials as ga_credentials # type: ignore from google.auth.transport.grpc import SslCredentials # type: ignore -from google.iam.v1 import iam_policy_pb2 # type: ignore -from google.iam.v1 import policy_pb2 # type: ignore -from google.longrunning import operations_pb2 # type: ignore -from google.protobuf import empty_pb2 # type: ignore from google.protobuf.json_format import MessageToJson import google.protobuf.message + import grpc # type: ignore -from grpc.experimental import aio # type: ignore import proto # type: ignore +from grpc.experimental import aio # type: ignore -from google.cloud.spanner_admin_database_v1.types import ( - backup_schedule as gsad_backup_schedule, -) from google.cloud.spanner_admin_database_v1.types import backup from google.cloud.spanner_admin_database_v1.types import backup as gsad_backup from google.cloud.spanner_admin_database_v1.types import backup_schedule +from google.cloud.spanner_admin_database_v1.types import ( + backup_schedule as gsad_backup_schedule, +) from google.cloud.spanner_admin_database_v1.types import spanner_database_admin - -from .base import DEFAULT_CLIENT_INFO, DatabaseAdminTransport +from google.iam.v1 import iam_policy_pb2 # type: ignore +from google.iam.v1 import policy_pb2 # type: ignore +from google.longrunning import operations_pb2 # type: ignore +from google.protobuf import empty_pb2 # type: ignore +from .base import DatabaseAdminTransport, DEFAULT_CLIENT_INFO from .grpc import DatabaseAdminGrpcTransport try: diff --git a/google/cloud/spanner_admin_database_v1/services/database_admin/transports/rest.py b/google/cloud/spanner_admin_database_v1/services/database_admin/transports/rest.py index b4e5250b8c..dfec442041 100644 --- a/google/cloud/spanner_admin_database_v1/services/database_admin/transports/rest.py +++ b/google/cloud/spanner_admin_database_v1/services/database_admin/transports/rest.py @@ -13,35 +13,42 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import dataclasses -import json # type: ignore import logging -from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Union -import warnings +import json # type: ignore -from google.api_core import gapic_v1, operations_v1, rest_helpers, rest_streaming +from google.auth.transport.requests import AuthorizedSession # type: ignore +from google.auth import credentials as ga_credentials # type: ignore from google.api_core import exceptions as core_exceptions from google.api_core import retry as retries -from google.auth import credentials as ga_credentials # type: ignore -from google.auth.transport.requests import AuthorizedSession # type: ignore -from google.iam.v1 import iam_policy_pb2 # type: ignore -from google.iam.v1 import policy_pb2 # type: ignore -from google.longrunning import operations_pb2 # type: ignore +from google.api_core import rest_helpers +from google.api_core import rest_streaming +from google.api_core import gapic_v1 import google.protobuf -from google.protobuf import empty_pb2 # type: ignore + from google.protobuf import json_format +from google.api_core import operations_v1 + from requests import __version__ as requests_version +import dataclasses +from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Union +import warnings + -from google.cloud.spanner_admin_database_v1.types import ( - backup_schedule as gsad_backup_schedule, -) from google.cloud.spanner_admin_database_v1.types import backup from google.cloud.spanner_admin_database_v1.types import backup as gsad_backup from google.cloud.spanner_admin_database_v1.types import backup_schedule +from google.cloud.spanner_admin_database_v1.types import ( + backup_schedule as gsad_backup_schedule, +) from google.cloud.spanner_admin_database_v1.types import spanner_database_admin +from google.iam.v1 import iam_policy_pb2 # type: ignore +from google.iam.v1 import policy_pb2 # type: ignore +from google.protobuf import empty_pb2 # type: ignore +from google.longrunning import operations_pb2 # type: ignore + -from .base import DEFAULT_CLIENT_INFO as BASE_DEFAULT_CLIENT_INFO from .rest_base import _BaseDatabaseAdminRestTransport +from .base import DEFAULT_CLIENT_INFO as BASE_DEFAULT_CLIENT_INFO try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] diff --git a/google/cloud/spanner_admin_database_v1/services/database_admin/transports/rest_base.py b/google/cloud/spanner_admin_database_v1/services/database_admin/transports/rest_base.py index 82c388f382..d0ee0a2cbb 100644 --- a/google/cloud/spanner_admin_database_v1/services/database_admin/transports/rest_base.py +++ b/google/cloud/spanner_admin_database_v1/services/database_admin/transports/rest_base.py @@ -14,25 +14,27 @@ # limitations under the License. # import json # type: ignore +from google.api_core import path_template +from google.api_core import gapic_v1 + +from google.protobuf import json_format +from .base import DatabaseAdminTransport, DEFAULT_CLIENT_INFO + import re from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Union -from google.api_core import gapic_v1, path_template -from google.iam.v1 import iam_policy_pb2 # type: ignore -from google.iam.v1 import policy_pb2 # type: ignore -from google.longrunning import operations_pb2 # type: ignore -from google.protobuf import empty_pb2 # type: ignore -from google.protobuf import json_format -from google.cloud.spanner_admin_database_v1.types import ( - backup_schedule as gsad_backup_schedule, -) from google.cloud.spanner_admin_database_v1.types import backup from google.cloud.spanner_admin_database_v1.types import backup as gsad_backup from google.cloud.spanner_admin_database_v1.types import backup_schedule +from google.cloud.spanner_admin_database_v1.types import ( + backup_schedule as gsad_backup_schedule, +) from google.cloud.spanner_admin_database_v1.types import spanner_database_admin - -from .base import DEFAULT_CLIENT_INFO, DatabaseAdminTransport +from google.iam.v1 import iam_policy_pb2 # type: ignore +from google.iam.v1 import policy_pb2 # type: ignore +from google.protobuf import empty_pb2 # type: ignore +from google.longrunning import operations_pb2 # type: ignore class _BaseDatabaseAdminRestTransport(DatabaseAdminTransport): diff --git a/google/cloud/spanner_admin_database_v1/types/__init__.py b/google/cloud/spanner_admin_database_v1/types/__init__.py index 46cd649f68..ca79ddec90 100644 --- a/google/cloud/spanner_admin_database_v1/types/__init__.py +++ b/google/cloud/spanner_admin_database_v1/types/__init__.py @@ -44,7 +44,12 @@ ListBackupSchedulesResponse, UpdateBackupScheduleRequest, ) -from .common import DatabaseDialect, EncryptionConfig, EncryptionInfo, OperationProgress +from .common import ( + EncryptionConfig, + EncryptionInfo, + OperationProgress, + DatabaseDialect, +) from .spanner_database_admin import ( AddSplitPointsRequest, AddSplitPointsResponse, @@ -70,12 +75,12 @@ RestoreDatabaseMetadata, RestoreDatabaseRequest, RestoreInfo, - RestoreSourceType, SplitPoints, UpdateDatabaseDdlMetadata, UpdateDatabaseDdlRequest, UpdateDatabaseMetadata, UpdateDatabaseRequest, + RestoreSourceType, ) __all__ = ( diff --git a/google/cloud/spanner_admin_database_v1/types/backup.py b/google/cloud/spanner_admin_database_v1/types/backup.py index 6c1f322aec..da236fb4ff 100644 --- a/google/cloud/spanner_admin_database_v1/types/backup.py +++ b/google/cloud/spanner_admin_database_v1/types/backup.py @@ -17,12 +17,13 @@ from typing import MutableMapping, MutableSequence +import proto # type: ignore + +from google.cloud.spanner_admin_database_v1.types import common from google.longrunning import operations_pb2 # type: ignore from google.protobuf import field_mask_pb2 # type: ignore from google.protobuf import timestamp_pb2 # type: ignore -import proto # type: ignore -from google.cloud.spanner_admin_database_v1.types import common __protobuf__ = proto.module( package="google.spanner.admin.database.v1", diff --git a/google/cloud/spanner_admin_database_v1/types/backup_schedule.py b/google/cloud/spanner_admin_database_v1/types/backup_schedule.py index 61eb050f34..2773c1ef63 100644 --- a/google/cloud/spanner_admin_database_v1/types/backup_schedule.py +++ b/google/cloud/spanner_admin_database_v1/types/backup_schedule.py @@ -17,12 +17,13 @@ from typing import MutableMapping, MutableSequence +import proto # type: ignore + +from google.cloud.spanner_admin_database_v1.types import backup from google.protobuf import duration_pb2 # type: ignore from google.protobuf import field_mask_pb2 # type: ignore from google.protobuf import timestamp_pb2 # type: ignore -import proto # type: ignore -from google.cloud.spanner_admin_database_v1.types import backup __protobuf__ = proto.module( package="google.spanner.admin.database.v1", diff --git a/google/cloud/spanner_admin_database_v1/types/common.py b/google/cloud/spanner_admin_database_v1/types/common.py index 5b52821754..fff1a8756c 100644 --- a/google/cloud/spanner_admin_database_v1/types/common.py +++ b/google/cloud/spanner_admin_database_v1/types/common.py @@ -17,9 +17,11 @@ from typing import MutableMapping, MutableSequence +import proto # type: ignore + from google.protobuf import timestamp_pb2 # type: ignore from google.rpc import status_pb2 # type: ignore -import proto # type: ignore + __protobuf__ = proto.module( package="google.spanner.admin.database.v1", diff --git a/google/cloud/spanner_admin_database_v1/types/spanner_database_admin.py b/google/cloud/spanner_admin_database_v1/types/spanner_database_admin.py index 129ab28572..c82fdc87df 100644 --- a/google/cloud/spanner_admin_database_v1/types/spanner_database_admin.py +++ b/google/cloud/spanner_admin_database_v1/types/spanner_database_admin.py @@ -17,15 +17,16 @@ from typing import MutableMapping, MutableSequence +import proto # type: ignore + +from google.cloud.spanner_admin_database_v1.types import backup as gsad_backup +from google.cloud.spanner_admin_database_v1.types import common from google.longrunning import operations_pb2 # type: ignore from google.protobuf import field_mask_pb2 # type: ignore from google.protobuf import struct_pb2 # type: ignore from google.protobuf import timestamp_pb2 # type: ignore from google.rpc import status_pb2 # type: ignore -import proto # type: ignore -from google.cloud.spanner_admin_database_v1.types import backup as gsad_backup -from google.cloud.spanner_admin_database_v1.types import common __protobuf__ = proto.module( package="google.spanner.admin.database.v1", diff --git a/google/cloud/spanner_admin_instance_v1/__init__.py b/google/cloud/spanner_admin_instance_v1/__init__.py index 367dc9a08a..261949561f 100644 --- a/google/cloud/spanner_admin_instance_v1/__init__.py +++ b/google/cloud/spanner_admin_instance_v1/__init__.py @@ -13,11 +13,10 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import sys +from google.cloud.spanner_admin_instance_v1 import gapic_version as package_version import google.api_core as api_core - -from google.cloud.spanner_admin_instance_v1 import gapic_version as package_version +import sys __version__ = package_version.__version__ @@ -28,48 +27,51 @@ # this code path once we drop support for Python 3.7 import importlib_metadata as metadata -from .services.instance_admin import InstanceAdminAsyncClient, InstanceAdminClient -from .types.common import FulfillmentPeriod, OperationProgress, ReplicaSelection -from .types.spanner_instance_admin import ( - AutoscalingConfig, - CreateInstanceConfigMetadata, - CreateInstanceConfigRequest, - CreateInstanceMetadata, - CreateInstancePartitionMetadata, - CreateInstancePartitionRequest, - CreateInstanceRequest, - DeleteInstanceConfigRequest, - DeleteInstancePartitionRequest, - DeleteInstanceRequest, - FreeInstanceMetadata, - GetInstanceConfigRequest, - GetInstancePartitionRequest, - GetInstanceRequest, - Instance, - InstanceConfig, - InstancePartition, - ListInstanceConfigOperationsRequest, - ListInstanceConfigOperationsResponse, - ListInstanceConfigsRequest, - ListInstanceConfigsResponse, - ListInstancePartitionOperationsRequest, - ListInstancePartitionOperationsResponse, - ListInstancePartitionsRequest, - ListInstancePartitionsResponse, - ListInstancesRequest, - ListInstancesResponse, - MoveInstanceMetadata, - MoveInstanceRequest, - MoveInstanceResponse, - ReplicaComputeCapacity, - ReplicaInfo, - UpdateInstanceConfigMetadata, - UpdateInstanceConfigRequest, - UpdateInstanceMetadata, - UpdateInstancePartitionMetadata, - UpdateInstancePartitionRequest, - UpdateInstanceRequest, -) + +from .services.instance_admin import InstanceAdminClient +from .services.instance_admin import InstanceAdminAsyncClient + +from .types.common import OperationProgress +from .types.common import ReplicaSelection +from .types.common import FulfillmentPeriod +from .types.spanner_instance_admin import AutoscalingConfig +from .types.spanner_instance_admin import CreateInstanceConfigMetadata +from .types.spanner_instance_admin import CreateInstanceConfigRequest +from .types.spanner_instance_admin import CreateInstanceMetadata +from .types.spanner_instance_admin import CreateInstancePartitionMetadata +from .types.spanner_instance_admin import CreateInstancePartitionRequest +from .types.spanner_instance_admin import CreateInstanceRequest +from .types.spanner_instance_admin import DeleteInstanceConfigRequest +from .types.spanner_instance_admin import DeleteInstancePartitionRequest +from .types.spanner_instance_admin import DeleteInstanceRequest +from .types.spanner_instance_admin import FreeInstanceMetadata +from .types.spanner_instance_admin import GetInstanceConfigRequest +from .types.spanner_instance_admin import GetInstancePartitionRequest +from .types.spanner_instance_admin import GetInstanceRequest +from .types.spanner_instance_admin import Instance +from .types.spanner_instance_admin import InstanceConfig +from .types.spanner_instance_admin import InstancePartition +from .types.spanner_instance_admin import ListInstanceConfigOperationsRequest +from .types.spanner_instance_admin import ListInstanceConfigOperationsResponse +from .types.spanner_instance_admin import ListInstanceConfigsRequest +from .types.spanner_instance_admin import ListInstanceConfigsResponse +from .types.spanner_instance_admin import ListInstancePartitionOperationsRequest +from .types.spanner_instance_admin import ListInstancePartitionOperationsResponse +from .types.spanner_instance_admin import ListInstancePartitionsRequest +from .types.spanner_instance_admin import ListInstancePartitionsResponse +from .types.spanner_instance_admin import ListInstancesRequest +from .types.spanner_instance_admin import ListInstancesResponse +from .types.spanner_instance_admin import MoveInstanceMetadata +from .types.spanner_instance_admin import MoveInstanceRequest +from .types.spanner_instance_admin import MoveInstanceResponse +from .types.spanner_instance_admin import ReplicaComputeCapacity +from .types.spanner_instance_admin import ReplicaInfo +from .types.spanner_instance_admin import UpdateInstanceConfigMetadata +from .types.spanner_instance_admin import UpdateInstanceConfigRequest +from .types.spanner_instance_admin import UpdateInstanceMetadata +from .types.spanner_instance_admin import UpdateInstancePartitionMetadata +from .types.spanner_instance_admin import UpdateInstancePartitionRequest +from .types.spanner_instance_admin import UpdateInstanceRequest if hasattr(api_core, "check_python_version") and hasattr( api_core, "check_dependency_versions" @@ -80,8 +82,8 @@ # An older version of api_core is installed which does not define the # functions above. We do equivalent checks manually. try: - import sys import warnings + import sys _py_version_str = sys.version.split()[0] _package_label = "google.cloud.spanner_admin_instance_v1" diff --git a/google/cloud/spanner_admin_instance_v1/services/instance_admin/__init__.py b/google/cloud/spanner_admin_instance_v1/services/instance_admin/__init__.py index 796f68a51c..51df22ca2e 100644 --- a/google/cloud/spanner_admin_instance_v1/services/instance_admin/__init__.py +++ b/google/cloud/spanner_admin_instance_v1/services/instance_admin/__init__.py @@ -13,8 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # -from .async_client import InstanceAdminAsyncClient from .client import InstanceAdminClient +from .async_client import InstanceAdminAsyncClient __all__ = ( "InstanceAdminClient", diff --git a/google/cloud/spanner_admin_instance_v1/services/instance_admin/async_client.py b/google/cloud/spanner_admin_instance_v1/services/instance_admin/async_client.py index 0797104b7c..1e87fc5a63 100644 --- a/google/cloud/spanner_admin_instance_v1/services/instance_admin/async_client.py +++ b/google/cloud/spanner_admin_instance_v1/services/instance_admin/async_client.py @@ -13,12 +13,12 @@ # See the License for the specific language governing permissions and # limitations under the License. # -from collections import OrderedDict import logging as std_logging +from collections import OrderedDict import re from typing import ( - Callable, Dict, + Callable, Mapping, MutableMapping, MutableSequence, @@ -30,15 +30,16 @@ ) import uuid +from google.cloud.spanner_admin_instance_v1 import gapic_version as package_version + +from google.api_core.client_options import ClientOptions from google.api_core import exceptions as core_exceptions from google.api_core import gapic_v1 from google.api_core import retry_async as retries -from google.api_core.client_options import ClientOptions from google.auth import credentials as ga_credentials # type: ignore from google.oauth2 import service_account # type: ignore import google.protobuf -from google.cloud.spanner_admin_instance_v1 import gapic_version as package_version try: OptionalRetry = Union[retries.AsyncRetry, gapic_v1.method._MethodDefault, None] @@ -47,18 +48,17 @@ from google.api_core import operation # type: ignore from google.api_core import operation_async # type: ignore +from google.cloud.spanner_admin_instance_v1.services.instance_admin import pagers +from google.cloud.spanner_admin_instance_v1.types import spanner_instance_admin from google.iam.v1 import iam_policy_pb2 # type: ignore from google.iam.v1 import policy_pb2 # type: ignore from google.longrunning import operations_pb2 # type: ignore +from google.longrunning import operations_pb2 # type: ignore from google.protobuf import field_mask_pb2 # type: ignore from google.protobuf import timestamp_pb2 # type: ignore - -from google.cloud.spanner_admin_instance_v1.services.instance_admin import pagers -from google.cloud.spanner_admin_instance_v1.types import spanner_instance_admin - -from .client import InstanceAdminClient -from .transports.base import DEFAULT_CLIENT_INFO, InstanceAdminTransport +from .transports.base import InstanceAdminTransport, DEFAULT_CLIENT_INFO from .transports.grpc_asyncio import InstanceAdminGrpcAsyncIOTransport +from .client import InstanceAdminClient try: from google.api_core import client_logging # type: ignore diff --git a/google/cloud/spanner_admin_instance_v1/services/instance_admin/client.py b/google/cloud/spanner_admin_instance_v1/services/instance_admin/client.py index 0aa8d0371c..0a2bc9afce 100644 --- a/google/cloud/spanner_admin_instance_v1/services/instance_admin/client.py +++ b/google/cloud/spanner_admin_instance_v1/services/instance_admin/client.py @@ -20,8 +20,8 @@ import os import re from typing import ( - Callable, Dict, + Callable, Mapping, MutableMapping, MutableSequence, @@ -35,19 +35,19 @@ import uuid import warnings +from google.cloud.spanner_admin_instance_v1 import gapic_version as package_version + from google.api_core import client_options as client_options_lib from google.api_core import exceptions as core_exceptions from google.api_core import gapic_v1 from google.api_core import retry as retries from google.auth import credentials as ga_credentials # type: ignore -from google.auth.exceptions import MutualTLSChannelError # type: ignore from google.auth.transport import mtls # type: ignore from google.auth.transport.grpc import SslCredentials # type: ignore +from google.auth.exceptions import MutualTLSChannelError # type: ignore from google.oauth2 import service_account # type: ignore import google.protobuf -from google.cloud.spanner_admin_instance_v1 import gapic_version as package_version - try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -64,16 +64,15 @@ from google.api_core import operation # type: ignore from google.api_core import operation_async # type: ignore +from google.cloud.spanner_admin_instance_v1.services.instance_admin import pagers +from google.cloud.spanner_admin_instance_v1.types import spanner_instance_admin from google.iam.v1 import iam_policy_pb2 # type: ignore from google.iam.v1 import policy_pb2 # type: ignore from google.longrunning import operations_pb2 # type: ignore +from google.longrunning import operations_pb2 # type: ignore from google.protobuf import field_mask_pb2 # type: ignore from google.protobuf import timestamp_pb2 # type: ignore - -from google.cloud.spanner_admin_instance_v1.services.instance_admin import pagers -from google.cloud.spanner_admin_instance_v1.types import spanner_instance_admin - -from .transports.base import DEFAULT_CLIENT_INFO, InstanceAdminTransport +from .transports.base import InstanceAdminTransport, DEFAULT_CLIENT_INFO from .transports.grpc import InstanceAdminGrpcTransport from .transports.grpc_asyncio import InstanceAdminGrpcAsyncIOTransport from .transports.rest import InstanceAdminRestTransport diff --git a/google/cloud/spanner_admin_instance_v1/services/instance_admin/pagers.py b/google/cloud/spanner_admin_instance_v1/services/instance_admin/pagers.py index f5874ca213..d4a3dde6d8 100644 --- a/google/cloud/spanner_admin_instance_v1/services/instance_admin/pagers.py +++ b/google/cloud/spanner_admin_instance_v1/services/instance_admin/pagers.py @@ -13,22 +13,21 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from google.api_core import gapic_v1 +from google.api_core import retry as retries +from google.api_core import retry_async as retries_async from typing import ( Any, AsyncIterator, Awaitable, Callable, - Iterator, - Optional, Sequence, Tuple, + Optional, + Iterator, Union, ) -from google.api_core import gapic_v1 -from google.api_core import retry as retries -from google.api_core import retry_async as retries_async - try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] OptionalAsyncRetry = Union[ @@ -38,9 +37,8 @@ OptionalRetry = Union[retries.Retry, object, None] # type: ignore OptionalAsyncRetry = Union[retries_async.AsyncRetry, object, None] # type: ignore -from google.longrunning import operations_pb2 # type: ignore - from google.cloud.spanner_admin_instance_v1.types import spanner_instance_admin +from google.longrunning import operations_pb2 # type: ignore class ListInstanceConfigsPager: diff --git a/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/__init__.py b/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/__init__.py index 5a726c8a4e..24e71739c7 100644 --- a/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/__init__.py +++ b/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/__init__.py @@ -19,7 +19,9 @@ from .base import InstanceAdminTransport from .grpc import InstanceAdminGrpcTransport from .grpc_asyncio import InstanceAdminGrpcAsyncIOTransport -from .rest import InstanceAdminRestInterceptor, InstanceAdminRestTransport +from .rest import InstanceAdminRestTransport +from .rest import InstanceAdminRestInterceptor + # Compile a registry of transports. _transport_registry = OrderedDict() # type: Dict[str, Type[InstanceAdminTransport]] diff --git a/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/base.py b/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/base.py index a02d79058c..d8c055d60e 100644 --- a/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/base.py +++ b/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/base.py @@ -16,21 +16,23 @@ import abc from typing import Awaitable, Callable, Dict, Optional, Sequence, Union +from google.cloud.spanner_admin_instance_v1 import gapic_version as package_version + +import google.auth # type: ignore import google.api_core from google.api_core import exceptions as core_exceptions -from google.api_core import gapic_v1, operations_v1 +from google.api_core import gapic_v1 from google.api_core import retry as retries -import google.auth # type: ignore +from google.api_core import operations_v1 from google.auth import credentials as ga_credentials # type: ignore -from google.iam.v1 import iam_policy_pb2 # type: ignore -from google.iam.v1 import policy_pb2 # type: ignore -from google.longrunning import operations_pb2 # type: ignore from google.oauth2 import service_account # type: ignore import google.protobuf -from google.protobuf import empty_pb2 # type: ignore -from google.cloud.spanner_admin_instance_v1 import gapic_version as package_version from google.cloud.spanner_admin_instance_v1.types import spanner_instance_admin +from google.iam.v1 import iam_policy_pb2 # type: ignore +from google.iam.v1 import policy_pb2 # type: ignore +from google.longrunning import operations_pb2 # type: ignore +from google.protobuf import empty_pb2 # type: ignore DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( gapic_version=package_version.__version__ diff --git a/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/grpc.py b/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/grpc.py index 9172e43923..844a86fcc0 100644 --- a/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/grpc.py +++ b/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/grpc.py @@ -16,25 +16,27 @@ import json import logging as std_logging import pickle -from typing import Callable, Dict, Optional, Sequence, Tuple, Union import warnings +from typing import Callable, Dict, Optional, Sequence, Tuple, Union -from google.api_core import gapic_v1, grpc_helpers, operations_v1 +from google.api_core import grpc_helpers +from google.api_core import operations_v1 +from google.api_core import gapic_v1 import google.auth # type: ignore from google.auth import credentials as ga_credentials # type: ignore from google.auth.transport.grpc import SslCredentials # type: ignore -from google.iam.v1 import iam_policy_pb2 # type: ignore -from google.iam.v1 import policy_pb2 # type: ignore -from google.longrunning import operations_pb2 # type: ignore -from google.protobuf import empty_pb2 # type: ignore from google.protobuf.json_format import MessageToJson import google.protobuf.message + import grpc # type: ignore import proto # type: ignore from google.cloud.spanner_admin_instance_v1.types import spanner_instance_admin - -from .base import DEFAULT_CLIENT_INFO, InstanceAdminTransport +from google.iam.v1 import iam_policy_pb2 # type: ignore +from google.iam.v1 import policy_pb2 # type: ignore +from google.longrunning import operations_pb2 # type: ignore +from google.protobuf import empty_pb2 # type: ignore +from .base import InstanceAdminTransport, DEFAULT_CLIENT_INFO try: from google.api_core import client_logging # type: ignore diff --git a/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/grpc_asyncio.py b/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/grpc_asyncio.py index e1a88c6800..e6d2e48cb3 100644 --- a/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/grpc_asyncio.py +++ b/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/grpc_asyncio.py @@ -15,29 +15,31 @@ # import inspect import json -import logging as std_logging import pickle -from typing import Awaitable, Callable, Dict, Optional, Sequence, Tuple, Union +import logging as std_logging import warnings +from typing import Awaitable, Callable, Dict, Optional, Sequence, Tuple, Union +from google.api_core import gapic_v1 +from google.api_core import grpc_helpers_async from google.api_core import exceptions as core_exceptions -from google.api_core import gapic_v1, grpc_helpers_async, operations_v1 from google.api_core import retry_async as retries +from google.api_core import operations_v1 from google.auth import credentials as ga_credentials # type: ignore from google.auth.transport.grpc import SslCredentials # type: ignore -from google.iam.v1 import iam_policy_pb2 # type: ignore -from google.iam.v1 import policy_pb2 # type: ignore -from google.longrunning import operations_pb2 # type: ignore -from google.protobuf import empty_pb2 # type: ignore from google.protobuf.json_format import MessageToJson import google.protobuf.message + import grpc # type: ignore -from grpc.experimental import aio # type: ignore import proto # type: ignore +from grpc.experimental import aio # type: ignore from google.cloud.spanner_admin_instance_v1.types import spanner_instance_admin - -from .base import DEFAULT_CLIENT_INFO, InstanceAdminTransport +from google.iam.v1 import iam_policy_pb2 # type: ignore +from google.iam.v1 import policy_pb2 # type: ignore +from google.longrunning import operations_pb2 # type: ignore +from google.protobuf import empty_pb2 # type: ignore +from .base import InstanceAdminTransport, DEFAULT_CLIENT_INFO from .grpc import InstanceAdminGrpcTransport try: diff --git a/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/rest.py b/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/rest.py index 4321c74778..feef4e8048 100644 --- a/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/rest.py +++ b/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/rest.py @@ -13,29 +13,36 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import dataclasses -import json # type: ignore import logging -from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Union -import warnings +import json # type: ignore -from google.api_core import gapic_v1, operations_v1, rest_helpers, rest_streaming +from google.auth.transport.requests import AuthorizedSession # type: ignore +from google.auth import credentials as ga_credentials # type: ignore from google.api_core import exceptions as core_exceptions from google.api_core import retry as retries -from google.auth import credentials as ga_credentials # type: ignore -from google.auth.transport.requests import AuthorizedSession # type: ignore -from google.iam.v1 import iam_policy_pb2 # type: ignore -from google.iam.v1 import policy_pb2 # type: ignore -from google.longrunning import operations_pb2 # type: ignore +from google.api_core import rest_helpers +from google.api_core import rest_streaming +from google.api_core import gapic_v1 import google.protobuf -from google.protobuf import empty_pb2 # type: ignore + from google.protobuf import json_format +from google.api_core import operations_v1 + from requests import __version__ as requests_version +import dataclasses +from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Union +import warnings + from google.cloud.spanner_admin_instance_v1.types import spanner_instance_admin +from google.iam.v1 import iam_policy_pb2 # type: ignore +from google.iam.v1 import policy_pb2 # type: ignore +from google.protobuf import empty_pb2 # type: ignore +from google.longrunning import operations_pb2 # type: ignore + -from .base import DEFAULT_CLIENT_INFO as BASE_DEFAULT_CLIENT_INFO from .rest_base import _BaseInstanceAdminRestTransport +from .base import DEFAULT_CLIENT_INFO as BASE_DEFAULT_CLIENT_INFO try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] diff --git a/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/rest_base.py b/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/rest_base.py index 15358ba33f..bf41644213 100644 --- a/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/rest_base.py +++ b/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/rest_base.py @@ -14,19 +14,21 @@ # limitations under the License. # import json # type: ignore +from google.api_core import path_template +from google.api_core import gapic_v1 + +from google.protobuf import json_format +from .base import InstanceAdminTransport, DEFAULT_CLIENT_INFO + import re from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Union -from google.api_core import gapic_v1, path_template + +from google.cloud.spanner_admin_instance_v1.types import spanner_instance_admin from google.iam.v1 import iam_policy_pb2 # type: ignore from google.iam.v1 import policy_pb2 # type: ignore -from google.longrunning import operations_pb2 # type: ignore from google.protobuf import empty_pb2 # type: ignore -from google.protobuf import json_format - -from google.cloud.spanner_admin_instance_v1.types import spanner_instance_admin - -from .base import DEFAULT_CLIENT_INFO, InstanceAdminTransport +from google.longrunning import operations_pb2 # type: ignore class _BaseInstanceAdminRestTransport(InstanceAdminTransport): diff --git a/google/cloud/spanner_admin_instance_v1/types/__init__.py b/google/cloud/spanner_admin_instance_v1/types/__init__.py index aa3f520a98..9bd2de3e47 100644 --- a/google/cloud/spanner_admin_instance_v1/types/__init__.py +++ b/google/cloud/spanner_admin_instance_v1/types/__init__.py @@ -13,7 +13,11 @@ # See the License for the specific language governing permissions and # limitations under the License. # -from .common import FulfillmentPeriod, OperationProgress, ReplicaSelection +from .common import ( + OperationProgress, + ReplicaSelection, + FulfillmentPeriod, +) from .spanner_instance_admin import ( AutoscalingConfig, CreateInstanceConfigMetadata, diff --git a/google/cloud/spanner_admin_instance_v1/types/common.py b/google/cloud/spanner_admin_instance_v1/types/common.py index eb52bbb769..548e61c38e 100644 --- a/google/cloud/spanner_admin_instance_v1/types/common.py +++ b/google/cloud/spanner_admin_instance_v1/types/common.py @@ -17,9 +17,11 @@ from typing import MutableMapping, MutableSequence -from google.protobuf import timestamp_pb2 # type: ignore import proto # type: ignore +from google.protobuf import timestamp_pb2 # type: ignore + + __protobuf__ = proto.module( package="google.spanner.admin.instance.v1", manifest={ diff --git a/google/cloud/spanner_admin_instance_v1/types/spanner_instance_admin.py b/google/cloud/spanner_admin_instance_v1/types/spanner_instance_admin.py index 4bf78b0ba7..dcfd545a98 100644 --- a/google/cloud/spanner_admin_instance_v1/types/spanner_instance_admin.py +++ b/google/cloud/spanner_admin_instance_v1/types/spanner_instance_admin.py @@ -17,12 +17,13 @@ from typing import MutableMapping, MutableSequence +import proto # type: ignore + +from google.cloud.spanner_admin_instance_v1.types import common from google.longrunning import operations_pb2 # type: ignore from google.protobuf import field_mask_pb2 # type: ignore from google.protobuf import timestamp_pb2 # type: ignore -import proto # type: ignore -from google.cloud.spanner_admin_instance_v1.types import common __protobuf__ = proto.module( package="google.spanner.admin.instance.v1", @@ -542,11 +543,24 @@ class AutoscalingTargets(proto.Message): Attributes: high_priority_cpu_utilization_percent (int): - Required. The target high priority cpu utilization + Optional. The target high priority cpu utilization percentage that the autoscaler should be trying to achieve for the instance. This number is on a scale from 0 (no utilization) to 100 (full utilization). The valid range is - [10, 90] inclusive. + [10, 90] inclusive. If not specified or set to 0, the + autoscaler skips scaling based on high priority CPU + utilization. + total_cpu_utilization_percent (int): + Optional. The target total CPU utilization percentage that + the autoscaler should be trying to achieve for the instance. + This number is on a scale from 0 (no utilization) to 100 + (full utilization). The valid range is [10, 90] inclusive. + If not specified or set to 0, the autoscaler skips scaling + based on total CPU utilization. If both + ``high_priority_cpu_utilization_percent`` and + ``total_cpu_utilization_percent`` are specified, the + autoscaler provisions the larger of the two required compute + capacities to satisfy both targets. storage_utilization_percent (int): Required. The target storage utilization percentage that the autoscaler should be trying to achieve for the instance. @@ -558,6 +572,10 @@ class AutoscalingTargets(proto.Message): proto.INT32, number=1, ) + total_cpu_utilization_percent: int = proto.Field( + proto.INT32, + number=4, + ) storage_utilization_percent: int = proto.Field( proto.INT32, number=2, @@ -593,6 +611,58 @@ class AutoscalingConfigOverrides(proto.Message): Optional. If specified, overrides the autoscaling target high_priority_cpu_utilization_percent in the top-level autoscaling configuration for the selected replicas. + autoscaling_target_total_cpu_utilization_percent (int): + Optional. If specified, overrides the autoscaling target + ``total_cpu_utilization_percent`` in the top-level + autoscaling configuration for the selected replicas. + disable_high_priority_cpu_autoscaling (bool): + Optional. If true, disables high priority CPU autoscaling + for the selected replicas and ignores + [high_priority_cpu_utilization_percent][google.spanner.admin.instance.v1.AutoscalingConfig.AutoscalingTargets.high_priority_cpu_utilization_percent] + in the top-level autoscaling configuration. + + When setting this field to true, setting + [autoscaling_target_high_priority_cpu_utilization_percent][google.spanner.admin.instance.v1.AutoscalingConfig.AsymmetricAutoscalingOption.AutoscalingConfigOverrides.autoscaling_target_high_priority_cpu_utilization_percent] + field to a non-zero value for the same replica is not + supported. + + If false, the + [autoscaling_target_high_priority_cpu_utilization_percent][google.spanner.admin.instance.v1.AutoscalingConfig.AsymmetricAutoscalingOption.AutoscalingConfigOverrides.autoscaling_target_high_priority_cpu_utilization_percent] + field in the replica will be used if set to a non-zero + value. Otherwise, the + [high_priority_cpu_utilization_percent][google.spanner.admin.instance.v1.AutoscalingConfig.AutoscalingTargets.high_priority_cpu_utilization_percent] + field in the top-level autoscaling configuration will be + used. + + Setting both + [disable_high_priority_cpu_autoscaling][google.spanner.admin.instance.v1.AutoscalingConfig.AsymmetricAutoscalingOption.AutoscalingConfigOverrides.disable_high_priority_cpu_autoscaling] + and + [disable_total_cpu_autoscaling][google.spanner.admin.instance.v1.AutoscalingConfig.AsymmetricAutoscalingOption.AutoscalingConfigOverrides.disable_total_cpu_autoscaling] + to true for the same replica is not supported. + disable_total_cpu_autoscaling (bool): + Optional. If true, disables total CPU autoscaling for the + selected replicas and ignores + [total_cpu_utilization_percent][google.spanner.admin.instance.v1.AutoscalingConfig.AutoscalingTargets.total_cpu_utilization_percent] + in the top-level autoscaling configuration. + + When setting this field to true, setting + [autoscaling_target_total_cpu_utilization_percent][google.spanner.admin.instance.v1.AutoscalingConfig.AsymmetricAutoscalingOption.AutoscalingConfigOverrides.autoscaling_target_total_cpu_utilization_percent] + field to a non-zero value for the same replica is not + supported. + + If false, the + [autoscaling_target_total_cpu_utilization_percent][google.spanner.admin.instance.v1.AutoscalingConfig.AsymmetricAutoscalingOption.AutoscalingConfigOverrides.autoscaling_target_total_cpu_utilization_percent] + field in the replica will be used if set to a non-zero + value. Otherwise, the + [total_cpu_utilization_percent][google.spanner.admin.instance.v1.AutoscalingConfig.AutoscalingTargets.total_cpu_utilization_percent] + field in the top-level autoscaling configuration will be + used. + + Setting both + [disable_high_priority_cpu_autoscaling][google.spanner.admin.instance.v1.AutoscalingConfig.AsymmetricAutoscalingOption.AutoscalingConfigOverrides.disable_high_priority_cpu_autoscaling] + and + [disable_total_cpu_autoscaling][google.spanner.admin.instance.v1.AutoscalingConfig.AsymmetricAutoscalingOption.AutoscalingConfigOverrides.disable_total_cpu_autoscaling] + to true for the same replica is not supported. """ autoscaling_limits: "AutoscalingConfig.AutoscalingLimits" = proto.Field( @@ -604,6 +674,18 @@ class AutoscalingConfigOverrides(proto.Message): proto.INT32, number=2, ) + autoscaling_target_total_cpu_utilization_percent: int = proto.Field( + proto.INT32, + number=4, + ) + disable_high_priority_cpu_autoscaling: bool = proto.Field( + proto.BOOL, + number=5, + ) + disable_total_cpu_autoscaling: bool = proto.Field( + proto.BOOL, + number=6, + ) replica_selection: common.ReplicaSelection = proto.Field( proto.MESSAGE, diff --git a/google/cloud/spanner_v1/services/spanner/__init__.py b/google/cloud/spanner_v1/services/spanner/__init__.py index 3c03f3e502..3af41fdc08 100644 --- a/google/cloud/spanner_v1/services/spanner/__init__.py +++ b/google/cloud/spanner_v1/services/spanner/__init__.py @@ -13,8 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # -from .async_client import SpannerAsyncClient from .client import SpannerClient +from .async_client import SpannerAsyncClient __all__ = ( "SpannerClient", diff --git a/google/cloud/spanner_v1/services/spanner/async_client.py b/google/cloud/spanner_v1/services/spanner/async_client.py index a6617f9b3c..b197172a8a 100644 --- a/google/cloud/spanner_v1/services/spanner/async_client.py +++ b/google/cloud/spanner_v1/services/spanner/async_client.py @@ -13,56 +13,53 @@ # See the License for the specific language governing permissions and # limitations under the License. # -from collections import OrderedDict import logging as std_logging +from collections import OrderedDict import re from typing import ( - AsyncIterable, - Awaitable, - Callable, Dict, + Callable, Mapping, MutableMapping, MutableSequence, Optional, + AsyncIterable, + Awaitable, Sequence, Tuple, Type, Union, ) +from google.cloud.spanner_v1 import gapic_version as package_version + +from google.api_core.client_options import ClientOptions from google.api_core import exceptions as core_exceptions from google.api_core import gapic_v1 from google.api_core import retry_async as retries -from google.api_core.client_options import ClientOptions from google.auth import credentials as ga_credentials # type: ignore from google.oauth2 import service_account # type: ignore import google.protobuf -from google.cloud.spanner_v1 import gapic_version as package_version try: OptionalRetry = Union[retries.AsyncRetry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER OptionalRetry = Union[retries.AsyncRetry, object, None] # type: ignore +from google.cloud.spanner_v1.services.spanner import pagers +from google.cloud.spanner_v1.types import commit_response +from google.cloud.spanner_v1.types import location +from google.cloud.spanner_v1.types import mutation +from google.cloud.spanner_v1.types import result_set +from google.cloud.spanner_v1.types import spanner +from google.cloud.spanner_v1.types import transaction from google.protobuf import struct_pb2 # type: ignore from google.protobuf import timestamp_pb2 # type: ignore from google.rpc import status_pb2 # type: ignore - -from google.cloud.spanner_v1.services.spanner import pagers -from google.cloud.spanner_v1.types import ( - commit_response, - location, - mutation, - result_set, - spanner, - transaction, -) - -from .client import SpannerClient -from .transports.base import DEFAULT_CLIENT_INFO, SpannerTransport +from .transports.base import SpannerTransport, DEFAULT_CLIENT_INFO from .transports.grpc_asyncio import SpannerGrpcAsyncIOTransport +from .client import SpannerClient try: from google.api_core import client_logging # type: ignore diff --git a/google/cloud/spanner_v1/services/spanner/client.py b/google/cloud/spanner_v1/services/spanner/client.py index bddda3708c..8083e74c7c 100644 --- a/google/cloud/spanner_v1/services/spanner/client.py +++ b/google/cloud/spanner_v1/services/spanner/client.py @@ -20,13 +20,13 @@ import os import re from typing import ( - Callable, Dict, - Iterable, + Callable, Mapping, MutableMapping, MutableSequence, Optional, + Iterable, Sequence, Tuple, Type, @@ -35,19 +35,19 @@ ) import warnings +from google.cloud.spanner_v1 import gapic_version as package_version + from google.api_core import client_options as client_options_lib from google.api_core import exceptions as core_exceptions from google.api_core import gapic_v1 from google.api_core import retry as retries from google.auth import credentials as ga_credentials # type: ignore -from google.auth.exceptions import MutualTLSChannelError # type: ignore from google.auth.transport import mtls # type: ignore from google.auth.transport.grpc import SslCredentials # type: ignore +from google.auth.exceptions import MutualTLSChannelError # type: ignore from google.oauth2 import service_account # type: ignore import google.protobuf -from google.cloud.spanner_v1 import gapic_version as package_version - try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -62,22 +62,18 @@ _LOGGER = std_logging.getLogger(__name__) +from google.cloud.spanner_v1.services.spanner import pagers +from google.cloud.spanner_v1.types import commit_response +from google.cloud.spanner_v1.types import location +from google.cloud.spanner_v1.types import mutation +from google.cloud.spanner_v1.types import result_set +from google.cloud.spanner_v1.types import spanner +from google.cloud.spanner_v1.types import transaction +from google.cloud.spanner_v1.metrics.metrics_interceptor import MetricsInterceptor from google.protobuf import struct_pb2 # type: ignore from google.protobuf import timestamp_pb2 # type: ignore from google.rpc import status_pb2 # type: ignore - -from google.cloud.spanner_v1.metrics.metrics_interceptor import MetricsInterceptor -from google.cloud.spanner_v1.services.spanner import pagers -from google.cloud.spanner_v1.types import ( - commit_response, - location, - mutation, - result_set, - spanner, - transaction, -) - -from .transports.base import DEFAULT_CLIENT_INFO, SpannerTransport +from .transports.base import SpannerTransport, DEFAULT_CLIENT_INFO from .transports.grpc import SpannerGrpcTransport from .transports.grpc_asyncio import SpannerGrpcAsyncIOTransport from .transports.rest import SpannerRestTransport diff --git a/google/cloud/spanner_v1/services/spanner/pagers.py b/google/cloud/spanner_v1/services/spanner/pagers.py index 5b03ccccf1..90927b54ee 100644 --- a/google/cloud/spanner_v1/services/spanner/pagers.py +++ b/google/cloud/spanner_v1/services/spanner/pagers.py @@ -13,22 +13,21 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from google.api_core import gapic_v1 +from google.api_core import retry as retries +from google.api_core import retry_async as retries_async from typing import ( Any, AsyncIterator, Awaitable, Callable, - Iterator, - Optional, Sequence, Tuple, + Optional, + Iterator, Union, ) -from google.api_core import gapic_v1 -from google.api_core import retry as retries -from google.api_core import retry_async as retries_async - try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] OptionalAsyncRetry = Union[ diff --git a/google/cloud/spanner_v1/services/spanner/transports/__init__.py b/google/cloud/spanner_v1/services/spanner/transports/__init__.py index c3344b7d1e..4442420c7f 100644 --- a/google/cloud/spanner_v1/services/spanner/transports/__init__.py +++ b/google/cloud/spanner_v1/services/spanner/transports/__init__.py @@ -19,7 +19,9 @@ from .base import SpannerTransport from .grpc import SpannerGrpcTransport from .grpc_asyncio import SpannerGrpcAsyncIOTransport -from .rest import SpannerRestInterceptor, SpannerRestTransport +from .rest import SpannerRestTransport +from .rest import SpannerRestInterceptor + # Compile a registry of transports. _transport_registry = OrderedDict() # type: Dict[str, Type[SpannerTransport]] diff --git a/google/cloud/spanner_v1/services/spanner/transports/base.py b/google/cloud/spanner_v1/services/spanner/transports/base.py index 4ce82fc560..3e68439cd7 100644 --- a/google/cloud/spanner_v1/services/spanner/transports/base.py +++ b/google/cloud/spanner_v1/services/spanner/transports/base.py @@ -16,24 +16,23 @@ import abc from typing import Awaitable, Callable, Dict, Optional, Sequence, Union +from google.cloud.spanner_v1 import gapic_version as package_version + +import google.auth # type: ignore import google.api_core from google.api_core import exceptions as core_exceptions from google.api_core import gapic_v1 from google.api_core import retry as retries -import google.auth # type: ignore from google.auth import credentials as ga_credentials # type: ignore from google.oauth2 import service_account # type: ignore import google.protobuf -from google.protobuf import empty_pb2 # type: ignore -from google.cloud.spanner_v1 import gapic_version as package_version +from google.cloud.spanner_v1.types import commit_response +from google.cloud.spanner_v1.types import result_set +from google.cloud.spanner_v1.types import spanner +from google.cloud.spanner_v1.types import transaction from google.cloud.spanner_v1.metrics.metrics_interceptor import MetricsInterceptor -from google.cloud.spanner_v1.types import ( - commit_response, - result_set, - spanner, - transaction, -) +from google.protobuf import empty_pb2 # type: ignore DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( gapic_version=package_version.__version__ diff --git a/google/cloud/spanner_v1/services/spanner/transports/grpc.py b/google/cloud/spanner_v1/services/spanner/transports/grpc.py index 6380907123..0d0613152f 100644 --- a/google/cloud/spanner_v1/services/spanner/transports/grpc.py +++ b/google/cloud/spanner_v1/services/spanner/transports/grpc.py @@ -16,28 +16,27 @@ import json import logging as std_logging import pickle -from typing import Callable, Dict, Optional, Sequence, Tuple, Union import warnings +from typing import Callable, Dict, Optional, Sequence, Tuple, Union -from google.api_core import gapic_v1, grpc_helpers +from google.api_core import grpc_helpers +from google.api_core import gapic_v1 import google.auth # type: ignore from google.auth import credentials as ga_credentials # type: ignore from google.auth.transport.grpc import SslCredentials # type: ignore -from google.protobuf import empty_pb2 # type: ignore from google.protobuf.json_format import MessageToJson import google.protobuf.message + import grpc # type: ignore import proto # type: ignore +from google.cloud.spanner_v1.types import commit_response +from google.cloud.spanner_v1.types import result_set +from google.cloud.spanner_v1.types import spanner +from google.cloud.spanner_v1.types import transaction from google.cloud.spanner_v1.metrics.metrics_interceptor import MetricsInterceptor -from google.cloud.spanner_v1.types import ( - commit_response, - result_set, - spanner, - transaction, -) - -from .base import DEFAULT_CLIENT_INFO, SpannerTransport +from google.protobuf import empty_pb2 # type: ignore +from .base import SpannerTransport, DEFAULT_CLIENT_INFO try: from google.api_core import client_logging # type: ignore diff --git a/google/cloud/spanner_v1/services/spanner/transports/grpc_asyncio.py b/google/cloud/spanner_v1/services/spanner/transports/grpc_asyncio.py index 9a396a2b77..4f492c7f44 100644 --- a/google/cloud/spanner_v1/services/spanner/transports/grpc_asyncio.py +++ b/google/cloud/spanner_v1/services/spanner/transports/grpc_asyncio.py @@ -15,32 +15,31 @@ # import inspect import json -import logging as std_logging import pickle -from typing import Awaitable, Callable, Dict, Optional, Sequence, Tuple, Union +import logging as std_logging import warnings +from typing import Awaitable, Callable, Dict, Optional, Sequence, Tuple, Union +from google.api_core import gapic_v1 +from google.api_core import grpc_helpers_async from google.api_core import exceptions as core_exceptions -from google.api_core import gapic_v1, grpc_helpers_async from google.api_core import retry_async as retries from google.auth import credentials as ga_credentials # type: ignore from google.auth.transport.grpc import SslCredentials # type: ignore -from google.protobuf import empty_pb2 # type: ignore from google.protobuf.json_format import MessageToJson import google.protobuf.message + import grpc # type: ignore -from grpc.experimental import aio # type: ignore import proto # type: ignore +from grpc.experimental import aio # type: ignore +from google.cloud.spanner_v1.types import commit_response +from google.cloud.spanner_v1.types import result_set +from google.cloud.spanner_v1.types import spanner +from google.cloud.spanner_v1.types import transaction from google.cloud.spanner_v1.metrics.metrics_interceptor import MetricsInterceptor -from google.cloud.spanner_v1.types import ( - commit_response, - result_set, - spanner, - transaction, -) - -from .base import DEFAULT_CLIENT_INFO, SpannerTransport +from google.protobuf import empty_pb2 # type: ignore +from .base import SpannerTransport, DEFAULT_CLIENT_INFO from .grpc import SpannerGrpcTransport try: diff --git a/google/cloud/spanner_v1/services/spanner/transports/rest.py b/google/cloud/spanner_v1/services/spanner/transports/rest.py index a8c30145ff..721e9929b3 100644 --- a/google/cloud/spanner_v1/services/spanner/transports/rest.py +++ b/google/cloud/spanner_v1/services/spanner/transports/rest.py @@ -13,32 +13,36 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import dataclasses -import json # type: ignore import logging -from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Union -import warnings +import json # type: ignore +from google.auth.transport.requests import AuthorizedSession # type: ignore +from google.auth import credentials as ga_credentials # type: ignore from google.api_core import exceptions as core_exceptions -from google.api_core import gapic_v1, rest_helpers, rest_streaming from google.api_core import retry as retries -from google.auth import credentials as ga_credentials # type: ignore -from google.auth.transport.requests import AuthorizedSession # type: ignore +from google.api_core import rest_helpers +from google.api_core import rest_streaming +from google.api_core import gapic_v1 import google.protobuf -from google.protobuf import empty_pb2 # type: ignore + from google.protobuf import json_format + from requests import __version__ as requests_version +import dataclasses +from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Union +import warnings + +from google.cloud.spanner_v1.types import commit_response +from google.cloud.spanner_v1.types import result_set +from google.cloud.spanner_v1.types import spanner +from google.cloud.spanner_v1.types import transaction from google.cloud.spanner_v1.metrics.metrics_interceptor import MetricsInterceptor -from google.cloud.spanner_v1.types import ( - commit_response, - result_set, - spanner, - transaction, -) +from google.protobuf import empty_pb2 # type: ignore + -from .base import DEFAULT_CLIENT_INFO as BASE_DEFAULT_CLIENT_INFO from .rest_base import _BaseSpannerRestTransport +from .base import DEFAULT_CLIENT_INFO as BASE_DEFAULT_CLIENT_INFO try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] diff --git a/google/cloud/spanner_v1/services/spanner/transports/rest_base.py b/google/cloud/spanner_v1/services/spanner/transports/rest_base.py index 69b96b31da..e93f5d4b58 100644 --- a/google/cloud/spanner_v1/services/spanner/transports/rest_base.py +++ b/google/cloud/spanner_v1/services/spanner/transports/rest_base.py @@ -14,22 +14,22 @@ # limitations under the License. # import json # type: ignore +from google.api_core import path_template +from google.api_core import gapic_v1 + +from google.protobuf import json_format +from .base import SpannerTransport, DEFAULT_CLIENT_INFO + import re from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Union -from google.api_core import gapic_v1, path_template -from google.protobuf import empty_pb2 # type: ignore -from google.protobuf import json_format +from google.cloud.spanner_v1.types import commit_response +from google.cloud.spanner_v1.types import result_set +from google.cloud.spanner_v1.types import spanner +from google.cloud.spanner_v1.types import transaction from google.cloud.spanner_v1.metrics.metrics_interceptor import MetricsInterceptor -from google.cloud.spanner_v1.types import ( - commit_response, - result_set, - spanner, - transaction, -) - -from .base import DEFAULT_CLIENT_INFO, SpannerTransport +from google.protobuf import empty_pb2 # type: ignore class _BaseSpannerRestTransport(SpannerTransport): diff --git a/google/cloud/spanner_v1/types/__init__.py b/google/cloud/spanner_v1/types/__init__.py index 31c232c84f..5a7ded16dd 100644 --- a/google/cloud/spanner_v1/types/__init__.py +++ b/google/cloud/spanner_v1/types/__init__.py @@ -13,9 +13,16 @@ # See the License for the specific language governing permissions and # limitations under the License. # -from .change_stream import ChangeStreamRecord -from .commit_response import CommitResponse -from .keys import KeyRange, KeySet +from .change_stream import ( + ChangeStreamRecord, +) +from .commit_response import ( + CommitResponse, +) +from .keys import ( + KeyRange, + KeySet, +) from .location import ( CacheUpdate, Group, @@ -25,16 +32,26 @@ RoutingHint, Tablet, ) -from .mutation import Mutation -from .query_plan import PlanNode, QueryAdvisorResult, QueryPlan -from .result_set import PartialResultSet, ResultSet, ResultSetMetadata, ResultSetStats +from .mutation import ( + Mutation, +) +from .query_plan import ( + PlanNode, + QueryAdvisorResult, + QueryPlan, +) +from .result_set import ( + PartialResultSet, + ResultSet, + ResultSetMetadata, + ResultSetStats, +) from .spanner import ( BatchCreateSessionsRequest, BatchCreateSessionsResponse, BatchWriteRequest, BatchWriteResponse, BeginTransactionRequest, - ClientContext, CommitRequest, CreateSessionRequest, DeleteSessionRequest, @@ -61,7 +78,12 @@ TransactionOptions, TransactionSelector, ) -from .type import StructType, Type, TypeAnnotationCode, TypeCode +from .type import ( + StructType, + Type, + TypeAnnotationCode, + TypeCode, +) __all__ = ( "ChangeStreamRecord", @@ -88,7 +110,6 @@ "BatchWriteRequest", "BatchWriteResponse", "BeginTransactionRequest", - "ClientContext", "CommitRequest", "CreateSessionRequest", "DeleteSessionRequest", diff --git a/google/cloud/spanner_v1/types/change_stream.py b/google/cloud/spanner_v1/types/change_stream.py index ef7724912a..762fc6a5d5 100644 --- a/google/cloud/spanner_v1/types/change_stream.py +++ b/google/cloud/spanner_v1/types/change_stream.py @@ -17,11 +17,12 @@ from typing import MutableMapping, MutableSequence -from google.protobuf import struct_pb2 # type: ignore -from google.protobuf import timestamp_pb2 # type: ignore import proto # type: ignore from google.cloud.spanner_v1.types import type as gs_type +from google.protobuf import struct_pb2 # type: ignore +from google.protobuf import timestamp_pb2 # type: ignore + __protobuf__ = proto.module( package="google.spanner.v1", diff --git a/google/cloud/spanner_v1/types/commit_response.py b/google/cloud/spanner_v1/types/commit_response.py index aa189bf11b..c0998c0810 100644 --- a/google/cloud/spanner_v1/types/commit_response.py +++ b/google/cloud/spanner_v1/types/commit_response.py @@ -17,10 +17,12 @@ from typing import MutableMapping, MutableSequence -from google.protobuf import timestamp_pb2 # type: ignore import proto # type: ignore +from google.cloud.spanner_v1.types import location from google.cloud.spanner_v1.types import transaction +from google.protobuf import timestamp_pb2 # type: ignore + __protobuf__ = proto.module( package="google.spanner.v1", @@ -54,6 +56,14 @@ class CommitResponse(proto.Message): ``IsolationLevel.REPEATABLE_READ``, then the snapshot timestamp is the timestamp at which all reads in the transaction ran. This timestamp is never returned. + cache_update (google.cloud.spanner_v1.types.CacheUpdate): + Optional. A cache update expresses a set of changes the + client should incorporate into its location cache. The + client should discard the changes if they are older than the + data it already has. This data can be obtained in response + to requests that included a ``RoutingHint`` field, but may + also be obtained by explicit location-fetching RPCs which + may be added in the future. """ class CommitStats(proto.Message): @@ -98,6 +108,11 @@ class CommitStats(proto.Message): number=5, message=timestamp_pb2.Timestamp, ) + cache_update: location.CacheUpdate = proto.Field( + proto.MESSAGE, + number=6, + message=location.CacheUpdate, + ) __all__ = tuple(sorted(__protobuf__.manifest)) diff --git a/google/cloud/spanner_v1/types/keys.py b/google/cloud/spanner_v1/types/keys.py index aafd20a136..15272ab689 100644 --- a/google/cloud/spanner_v1/types/keys.py +++ b/google/cloud/spanner_v1/types/keys.py @@ -17,9 +17,11 @@ from typing import MutableMapping, MutableSequence -from google.protobuf import struct_pb2 # type: ignore import proto # type: ignore +from google.protobuf import struct_pb2 # type: ignore + + __protobuf__ = proto.module( package="google.spanner.v1", manifest={ diff --git a/google/cloud/spanner_v1/types/location.py b/google/cloud/spanner_v1/types/location.py index 689ae1685a..ce3ffa28d0 100644 --- a/google/cloud/spanner_v1/types/location.py +++ b/google/cloud/spanner_v1/types/location.py @@ -17,10 +17,11 @@ from typing import MutableMapping, MutableSequence -from google.protobuf import struct_pb2 # type: ignore import proto # type: ignore from google.cloud.spanner_v1.types import type as gs_type +from google.protobuf import struct_pb2 # type: ignore + __protobuf__ = proto.module( package="google.spanner.v1", @@ -111,10 +112,9 @@ class Tablet(proto.Message): this tablet -- either an IP address or DNS hostname and a port number. location (str): - Where this tablet is located. In the Spanner - managed service, this is the name of a region, - such as "us-central1". In Spanner Omni, this is - a previously created location. + Where this tablet is located. This is the + name of a Google Cloud region, such as + "us-central1". role (google.cloud.spanner_v1.types.Tablet.Role): The role of the tablet. incarnation (bytes): @@ -593,11 +593,9 @@ class RoutingHint(proto.Message): incarnations. The server may include a ``CacheUpdate`` with new locations for those tablets. client_location (str): - If present, the client's current location. In - the Spanner managed service, this should be the - name of a Google Cloud zone or region, such as - "us-central1". In Spanner Omni, this should - correspond to a previously created location. + If present, the client's current location. + This should be the name of a Google Cloud zone + or region, such as "us-central1". If absent, the client's location will be assumed to be the same as the location of the server the diff --git a/google/cloud/spanner_v1/types/mutation.py b/google/cloud/spanner_v1/types/mutation.py index 97da93335e..3cbc3b937b 100644 --- a/google/cloud/spanner_v1/types/mutation.py +++ b/google/cloud/spanner_v1/types/mutation.py @@ -17,11 +17,12 @@ from typing import MutableMapping, MutableSequence -from google.protobuf import struct_pb2 # type: ignore -from google.protobuf import timestamp_pb2 # type: ignore import proto # type: ignore from google.cloud.spanner_v1.types import keys +from google.protobuf import struct_pb2 # type: ignore +from google.protobuf import timestamp_pb2 # type: ignore + __protobuf__ = proto.module( package="google.spanner.v1", diff --git a/google/cloud/spanner_v1/types/query_plan.py b/google/cloud/spanner_v1/types/query_plan.py index dc93ba78e7..efe32934f8 100644 --- a/google/cloud/spanner_v1/types/query_plan.py +++ b/google/cloud/spanner_v1/types/query_plan.py @@ -17,9 +17,11 @@ from typing import MutableMapping, MutableSequence -from google.protobuf import struct_pb2 # type: ignore import proto # type: ignore +from google.protobuf import struct_pb2 # type: ignore + + __protobuf__ = proto.module( package="google.spanner.v1", manifest={ diff --git a/google/cloud/spanner_v1/types/result_set.py b/google/cloud/spanner_v1/types/result_set.py index d36db741a7..7ca1d8bfec 100644 --- a/google/cloud/spanner_v1/types/result_set.py +++ b/google/cloud/spanner_v1/types/result_set.py @@ -17,13 +17,14 @@ from typing import MutableMapping, MutableSequence -from google.protobuf import struct_pb2 # type: ignore import proto # type: ignore from google.cloud.spanner_v1.types import location from google.cloud.spanner_v1.types import query_plan as gs_query_plan from google.cloud.spanner_v1.types import transaction as gs_transaction from google.cloud.spanner_v1.types import type as gs_type +from google.protobuf import struct_pb2 # type: ignore + __protobuf__ = proto.module( package="google.spanner.v1", @@ -68,6 +69,14 @@ class ResultSet(proto.Message): token with the highest sequence number from this transaction attempt to the [Commit][google.spanner.v1.Spanner.Commit] request for this transaction. + cache_update (google.cloud.spanner_v1.types.CacheUpdate): + Optional. A cache update expresses a set of changes the + client should incorporate into its location cache. The + client should discard the changes if they are older than the + data it already has. This data can be obtained in response + to requests that included a ``RoutingHint`` field, but may + also be obtained by explicit location-fetching RPCs which + may be added in the future. """ metadata: "ResultSetMetadata" = proto.Field( @@ -90,6 +99,11 @@ class ResultSet(proto.Message): number=5, message=gs_transaction.MultiplexedSessionPrecommitToken, ) + cache_update: location.CacheUpdate = proto.Field( + proto.MESSAGE, + number=6, + message=location.CacheUpdate, + ) class PartialResultSet(proto.Message): diff --git a/google/cloud/spanner_v1/types/spanner.py b/google/cloud/spanner_v1/types/spanner.py index 888728e2cd..46e5ad6d25 100644 --- a/google/cloud/spanner_v1/types/spanner.py +++ b/google/cloud/spanner_v1/types/spanner.py @@ -17,17 +17,19 @@ from typing import MutableMapping, MutableSequence -from google.protobuf import duration_pb2 # type: ignore -from google.protobuf import struct_pb2 # type: ignore -from google.protobuf import timestamp_pb2 # type: ignore -from google.rpc import status_pb2 # type: ignore import proto # type: ignore from google.cloud.spanner_v1.types import keys from google.cloud.spanner_v1.types import location as gs_location -from google.cloud.spanner_v1.types import mutation, result_set +from google.cloud.spanner_v1.types import mutation +from google.cloud.spanner_v1.types import result_set from google.cloud.spanner_v1.types import transaction as gs_transaction from google.cloud.spanner_v1.types import type as gs_type +from google.protobuf import duration_pb2 # type: ignore +from google.protobuf import struct_pb2 # type: ignore +from google.protobuf import timestamp_pb2 # type: ignore +from google.rpc import status_pb2 # type: ignore + __protobuf__ = proto.module( package="google.spanner.v1", @@ -41,7 +43,6 @@ "ListSessionsResponse", "DeleteSessionRequest", "RequestOptions", - "ClientContext", "DirectedReadOptions", "ExecuteSqlRequest", "ExecuteBatchDmlRequest", @@ -334,14 +335,20 @@ class RequestOptions(proto.Message): A tag used for statistics collection about this transaction. Both ``request_tag`` and ``transaction_tag`` can be specified for a read or query that belongs to a transaction. - The value of transaction_tag should be the same for all - requests belonging to the same transaction. If this request - doesn't belong to any transaction, ``transaction_tag`` is - ignored. Legal characters for ``transaction_tag`` values are - all printable characters (ASCII 32 - 126) and the length of - a ``transaction_tag`` is limited to 50 characters. Values - that exceed this limit are truncated. Any leading underscore - (\_) characters are removed from the string. + To enable tagging on a transaction, ``transaction_tag`` must + be set to the same value for all requests belonging to the + same transaction, including + [BeginTransaction][google.spanner.v1.Spanner.BeginTransaction]. + If this request doesn't belong to any transaction, + ``transaction_tag`` is ignored. Legal characters for + ``transaction_tag`` values are all printable characters + (ASCII 32 - 126) and the length of a ``transaction_tag`` is + limited to 50 characters. Values that exceed this limit are + truncated. Any leading underscore (\_) characters are + removed from the string. + client_context (google.cloud.spanner_v1.types.RequestOptions.ClientContext): + Optional. Optional context that may be needed + for some requests. """ class Priority(proto.Enum): @@ -381,6 +388,25 @@ class Priority(proto.Enum): PRIORITY_MEDIUM = 2 PRIORITY_HIGH = 3 + class ClientContext(proto.Message): + r"""Container for various pieces of client-owned context attached + to a request. + + Attributes: + secure_context (MutableMapping[str, google.protobuf.struct_pb2.Value]): + Optional. Map of parameter name to value for this request. + These values will be returned by any SECURE_CONTEXT() calls + invoked by this request (e.g., by queries against + Parameterized Secure Views). + """ + + secure_context: MutableMapping[str, struct_pb2.Value] = proto.MapField( + proto.STRING, + proto.MESSAGE, + number=1, + message=struct_pb2.Value, + ) + priority: Priority = proto.Field( proto.ENUM, number=1, @@ -397,27 +423,7 @@ class Priority(proto.Enum): client_context: ClientContext = proto.Field( proto.MESSAGE, number=4, - message="ClientContext", - ) - - -class ClientContext(proto.Message): - r"""Container for various pieces of client-owned context - attached to a request. - - Attributes: - secure_context (MutableMapping[str, google.protobuf.struct_pb2.Value]): - Optional. Map of parameter name to value for this request. - These values will be returned by any SECURE_CONTEXT() calls - invoked by this request (e.g., by queries against - Parameterized Secure Views). - """ - - secure_context: MutableMapping[str, struct_pb2.Value] = proto.MapField( - proto.STRING, - proto.MESSAGE, - number=1, - message=struct_pb2.Value, + message=ClientContext, ) @@ -686,8 +692,8 @@ class ExecuteSqlRequest(proto.Message): successful execution of a DML statement shouldn't be assumed until a subsequent ``Commit`` call completes successfully. routing_hint (google.cloud.spanner_v1.types.RoutingHint): - Optional. If present, it makes the Spanner - requests location-aware. + Optional. Makes the Spanner requests + location-aware if present. It gives the server hints that can be used to route the request to an appropriate server, potentially significantly decreasing latency and @@ -1143,8 +1149,8 @@ class PartitionQueryRequest(proto.Message): with a ``PartitionedDml`` transaction for large, partition-friendly DML operations. params (google.protobuf.struct_pb2.Struct): - Parameter names and values that bind to placeholders in the - SQL string. + Optional. Parameter names and values that bind to + placeholders in the SQL string. A parameter placeholder consists of the ``@`` character followed by the parameter name (for example, @@ -1160,9 +1166,10 @@ class PartitionQueryRequest(proto.Message): It's an error to execute a SQL statement with unbound parameters. param_types (MutableMapping[str, google.cloud.spanner_v1.types.Type]): - It isn't always possible for Cloud Spanner to infer the - right SQL type from a JSON value. For example, values of - type ``BYTES`` and values of type ``STRING`` both appear in + Optional. It isn't always possible for Cloud Spanner to + infer the right SQL type from a JSON value. For example, + values of type ``BYTES`` and values of type ``STRING`` both + appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings. @@ -1425,8 +1432,8 @@ class ReadRequest(proto.Message): Optional. Lock Hint for the request, it can only be used with read-write transactions. routing_hint (google.cloud.spanner_v1.types.RoutingHint): - Optional. If present, it makes the Spanner - requests location-aware. + Optional. Makes the Spanner requests + location-aware if present. It gives the server hints that can be used to route the request to an appropriate server, potentially significantly decreasing latency and @@ -1608,6 +1615,15 @@ class BeginTransactionRequest(proto.Message): queries. You must randomly select one of the mutations from the mutation set and send it as a part of this request. + routing_hint (google.cloud.spanner_v1.types.RoutingHint): + Optional. Makes the Spanner requests + location-aware if present. + It gives the server hints that can be used to + route the request to an appropriate server, + potentially significantly decreasing latency and + improving throughput. To achieve improved + performance, most fields must be filled in with + accurate values. """ session: str = proto.Field( @@ -1629,6 +1645,11 @@ class BeginTransactionRequest(proto.Message): number=4, message=mutation.Mutation, ) + routing_hint: gs_location.RoutingHint = proto.Field( + proto.MESSAGE, + number=5, + message=gs_location.RoutingHint, + ) class CommitRequest(proto.Message): @@ -1687,6 +1708,15 @@ class CommitRequest(proto.Message): token with the highest sequence number received in this transaction attempt. Failing to do so results in a ``FailedPrecondition`` error. + routing_hint (google.cloud.spanner_v1.types.RoutingHint): + Optional. Makes the Spanner requests + location-aware if present. + It gives the server hints that can be used to + route the request to an appropriate server, + potentially significantly decreasing latency and + improving throughput. To achieve improved + performance, most fields must be filled in with + accurate values. """ session: str = proto.Field( @@ -1728,6 +1758,11 @@ class CommitRequest(proto.Message): number=9, message=gs_transaction.MultiplexedSessionPrecommitToken, ) + routing_hint: gs_location.RoutingHint = proto.Field( + proto.MESSAGE, + number=10, + message=gs_location.RoutingHint, + ) class RollbackRequest(proto.Message): @@ -1821,7 +1856,13 @@ class BatchWriteResponse(proto.Message): indicates a failure. commit_timestamp (google.protobuf.timestamp_pb2.Timestamp): The commit timestamp of the transaction that applied this - batch. Present if ``status`` is ``OK``, absent otherwise. + batch. Present if status is OK and the mutation groups were + applied, absent otherwise. + + For mutation groups with conditions, a status=OK and missing + commit_timestamp means that the mutation groups were not + applied due to the condition not being satisfied after + evaluation. """ indexes: MutableSequence[int] = proto.RepeatedField( diff --git a/google/cloud/spanner_v1/types/transaction.py b/google/cloud/spanner_v1/types/transaction.py index fd5cede050..21c82794d2 100644 --- a/google/cloud/spanner_v1/types/transaction.py +++ b/google/cloud/spanner_v1/types/transaction.py @@ -17,9 +17,12 @@ from typing import MutableMapping, MutableSequence +import proto # type: ignore + +from google.cloud.spanner_v1.types import location from google.protobuf import duration_pb2 # type: ignore from google.protobuf import timestamp_pb2 # type: ignore -import proto # type: ignore + __protobuf__ = proto.module( package="google.spanner.v1", @@ -156,38 +159,42 @@ class ReadLockMode(proto.Enum): READ_LOCK_MODE_UNSPECIFIED (0): Default value. + - If isolation level is + [SERIALIZABLE][google.spanner.v1.TransactionOptions.IsolationLevel.SERIALIZABLE], + locking semantics default to ``PESSIMISTIC``. - If isolation level is [REPEATABLE_READ][google.spanner.v1.TransactionOptions.IsolationLevel.REPEATABLE_READ], - then it is an error to specify ``read_lock_mode``. Locking - semantics default to ``OPTIMISTIC``. No validation checks - are done for reads, except to validate that the data that - was served at the snapshot time is unchanged at commit - time in the following cases: - - 1. reads done as part of queries that use - ``SELECT FOR UPDATE`` - 2. reads done as part of statements with a - ``LOCK_SCANNED_RANGES`` hint - 3. reads done as part of DML statements - - - At all other isolation levels, if ``read_lock_mode`` is - the default value, then pessimistic read locks are used. + locking semantics default to ``OPTIMISTIC``. + - See `Concurrency + control `__ + for more details. PESSIMISTIC (1): Pessimistic lock mode. - Read locks are acquired immediately on read. Semantics - described only applies to + Lock acquisition behavior depends on the isolation level in + use. In [SERIALIZABLE][google.spanner.v1.TransactionOptions.IsolationLevel.SERIALIZABLE] - isolation. + isolation, reads and writes acquire necessary locks during + transaction statement execution. In + [REPEATABLE_READ][google.spanner.v1.TransactionOptions.IsolationLevel.REPEATABLE_READ] + isolation, reads that explicitly request to be locked and + writes acquire locks. See `Concurrency + control `__ + for details on the types of locks acquired at each + transaction step. OPTIMISTIC (2): Optimistic lock mode. - Locks for reads within the transaction are not acquired on - read. Instead the locks are acquired on a commit to validate - that read/queried data has not changed since the transaction - started. Semantics described only applies to + Lock acquisition behavior depends on the isolation level in + use. In both [SERIALIZABLE][google.spanner.v1.TransactionOptions.IsolationLevel.SERIALIZABLE] - isolation. + and + [REPEATABLE_READ][google.spanner.v1.TransactionOptions.IsolationLevel.REPEATABLE_READ] + isolation, reads and writes do not acquire locks during + transaction statement execution. See `Concurrency + control `__ + for details on how the guarantees of each isolation level + are provided at commit time. """ READ_LOCK_MODE_UNSPECIFIED = 0 PESSIMISTIC = 1 @@ -383,6 +390,14 @@ class Transaction(proto.Message): this transaction attempt should be passed to the [Commit][google.spanner.v1.Spanner.Commit] request for this transaction. + cache_update (google.cloud.spanner_v1.types.CacheUpdate): + Optional. A cache update expresses a set of changes the + client should incorporate into its location cache. The + client should discard the changes if they are older than the + data it already has. This data can be obtained in response + to requests that included a ``RoutingHint`` field, but may + also be obtained by explicit location-fetching RPCs which + may be added in the future. """ id: bytes = proto.Field( @@ -399,6 +414,11 @@ class Transaction(proto.Message): number=3, message="MultiplexedSessionPrecommitToken", ) + cache_update: location.CacheUpdate = proto.Field( + proto.MESSAGE, + number=5, + message=location.CacheUpdate, + ) class TransactionSelector(proto.Message): diff --git a/google/cloud/spanner_v1/types/type.py b/google/cloud/spanner_v1/types/type.py index e8258d6085..d6d516569e 100644 --- a/google/cloud/spanner_v1/types/type.py +++ b/google/cloud/spanner_v1/types/type.py @@ -19,6 +19,7 @@ import proto # type: ignore + __protobuf__ = proto.module( package="google.spanner.v1", manifest={ diff --git a/noxfile.py b/noxfile.py index 9136bbde98..62d67d0be1 100644 --- a/noxfile.py +++ b/noxfile.py @@ -68,7 +68,6 @@ SYSTEM_TEST_STANDARD_DEPENDENCIES: List[str] = [ "mock", "pytest", - "pytest-asyncio", "google-cloud-testutils", ] SYSTEM_TEST_EXTERNAL_DEPENDENCIES: List[str] = [] @@ -222,8 +221,9 @@ def unit(session, protobuf_implementation): session.install("protobuf<4") # Run py.test against the unit tests. - args = [ + session.run( "py.test", + "--quiet", "-s", f"--junitxml=unit_{session.python}_sponge_log.xml", "--cov=google", @@ -232,13 +232,8 @@ def unit(session, protobuf_implementation): "--cov-config=.coveragerc", "--cov-report=", "--cov-fail-under=0", - ] - if not session.posargs: - args.append(os.path.join("tests", "unit")) - args.extend(session.posargs) - - session.run( - *args, + os.path.join("tests", "unit"), + *session.posargs, env={ "PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION": protobuf_implementation, }, @@ -371,19 +366,12 @@ def system(session, protobuf_implementation, database_dialect): # Run py.test against the system tests. if system_test_exists: - args = [ + session.run( "py.test", "--quiet", - "-o", - "asyncio_mode=auto", f"--junitxml=system_{session.python}_sponge_log.xml", - ] - if not session.posargs: - args.append(system_test_path) - args.extend(session.posargs) - - session.run( - *args, + system_test_path, + *session.posargs, env={ "PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION": protobuf_implementation, "SPANNER_DATABASE_DIALECT": database_dialect, @@ -391,47 +379,12 @@ def system(session, protobuf_implementation, database_dialect): }, ) elif system_test_folder_exists: - # Run sync tests - sync_args = [ - "py.test", - "--quiet", - "-o", - "asyncio_mode=auto", - f"--junitxml=system_{session.python}_sync_sponge_log.xml", - ] - if not session.posargs: - sync_args.append(os.path.join("tests", "system")) - sync_args.append("--ignore=tests/system/_async") - else: - sync_args.extend(session.posargs) - session.run( - *sync_args, - env={ - "PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION": protobuf_implementation, - "SPANNER_DATABASE_DIALECT": database_dialect, - "SKIP_BACKUP_TESTS": "true", - }, - ) - - # Run async tests - async_args = [ "py.test", "--quiet", - "-o", - "asyncio_mode=auto", - f"--junitxml=system_{session.python}_async_sponge_log.xml", - ] - if not session.posargs: - async_args.append(os.path.join("tests", "system", "_async")) - else: - # If posargs are provided, only run if they match async tests - # or just skip if they were already run in sync. - # For simplicity, we only run async folder if no posargs. - return - - session.run( - *async_args, + f"--junitxml=system_{session.python}_sponge_log.xml", + system_test_folder_path, + *session.posargs, env={ "PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION": protobuf_implementation, "SPANNER_DATABASE_DIALECT": database_dialect, @@ -602,10 +555,6 @@ def prerelease_deps(session, protobuf_implementation, database_dialect): "google-cloud-testutils", # dependencies of google-cloud-testutils" "click", - # dependency of google-auth - "cffi", - "cryptography", - "cachetools", ] for dep in prerel_deps: @@ -644,8 +593,6 @@ def prerelease_deps(session, protobuf_implementation, database_dialect): session.run( "py.test", "--verbose", - "-o", - "asyncio_mode=auto", f"--junitxml=system_{session.python}_sponge_log.xml", system_test_path, *session.posargs, @@ -659,8 +606,6 @@ def prerelease_deps(session, protobuf_implementation, database_dialect): session.run( "py.test", "--verbose", - "-o", - "asyncio_mode=auto", f"--junitxml=system_{session.python}_sponge_log.xml", system_test_folder_path, *session.posargs, @@ -670,10 +615,3 @@ def prerelease_deps(session, protobuf_implementation, database_dialect): "SKIP_BACKUP_TESTS": "true", }, ) - - -@nox.session(python=DEFAULT_PYTHON_VERSION) -def generate(session): - """Regenerate synchronous code from asynchronous code.""" - session.install("black", "autoflake") - session.run("python", ".cross_sync/generate.py", "google/cloud/spanner_v1") diff --git a/tests/unit/gapic/conftest.py b/tests/unit/gapic/conftest.py deleted file mode 100644 index 22ba265871..0000000000 --- a/tests/unit/gapic/conftest.py +++ /dev/null @@ -1,20 +0,0 @@ -import asyncio -import sys - -import pytest - - -@pytest.fixture(autouse=True) -def provide_loop_to_sync_grpc_tests(): - """ - GAPIC creates synchronous methods testing Asyncio transports. - If no global loop exists, `grpc.aio` engine crashes during initialization. - """ - try: - loop = asyncio.get_event_loop() - except RuntimeError: - loop = asyncio.new_event_loop() - asyncio.set_event_loop(loop) - - yield - # No close here, just ensure existance diff --git a/tests/unit/gapic/spanner_admin_database_v1/test_database_admin.py b/tests/unit/gapic/spanner_admin_database_v1/test_database_admin.py index 76c83a302e..ceade23bb0 100644 --- a/tests/unit/gapic/spanner_admin_database_v1/test_database_admin.py +++ b/tests/unit/gapic/spanner_admin_database_v1/test_database_admin.py @@ -23,19 +23,20 @@ except ImportError: # pragma: NO COVER import mock -from collections.abc import AsyncIterable, Iterable +import grpc +from grpc.experimental import aio +from collections.abc import Iterable, AsyncIterable +from google.protobuf import json_format import json import math - +import pytest from google.api_core import api_core_version -from google.protobuf import json_format -import grpc -from grpc.experimental import aio -from proto.marshal.rules import wrappers from proto.marshal.rules.dates import DurationRule, TimestampRule -import pytest -from requests import PreparedRequest, Request, Response +from proto.marshal.rules import wrappers +from requests import Response +from requests import Request, PreparedRequest from requests.sessions import Session +from google.protobuf import json_format try: from google.auth.aio import credentials as ga_credentials_async @@ -44,26 +45,40 @@ except ImportError: # pragma: NO COVER HAS_GOOGLE_AUTH_AIO = False -from google.api_core import ( - future, - gapic_v1, - grpc_helpers, - grpc_helpers_async, - operation, - operations_v1, - path_template, -) from google.api_core import client_options from google.api_core import exceptions as core_exceptions +from google.api_core import future +from google.api_core import gapic_v1 +from google.api_core import grpc_helpers +from google.api_core import grpc_helpers_async +from google.api_core import operation from google.api_core import operation_async # type: ignore +from google.api_core import operations_v1 +from google.api_core import path_template from google.api_core import retry as retries -import google.auth from google.auth import credentials as ga_credentials from google.auth.exceptions import MutualTLSChannelError +from google.cloud.spanner_admin_database_v1.services.database_admin import ( + DatabaseAdminAsyncClient, +) +from google.cloud.spanner_admin_database_v1.services.database_admin import ( + DatabaseAdminClient, +) +from google.cloud.spanner_admin_database_v1.services.database_admin import pagers +from google.cloud.spanner_admin_database_v1.services.database_admin import transports +from google.cloud.spanner_admin_database_v1.types import backup +from google.cloud.spanner_admin_database_v1.types import backup as gsad_backup +from google.cloud.spanner_admin_database_v1.types import backup_schedule +from google.cloud.spanner_admin_database_v1.types import ( + backup_schedule as gsad_backup_schedule, +) +from google.cloud.spanner_admin_database_v1.types import common +from google.cloud.spanner_admin_database_v1.types import spanner_database_admin from google.iam.v1 import iam_policy_pb2 # type: ignore from google.iam.v1 import options_pb2 # type: ignore from google.iam.v1 import policy_pb2 # type: ignore from google.longrunning import operations_pb2 # type: ignore +from google.longrunning import operations_pb2 # type: ignore from google.oauth2 import service_account from google.protobuf import any_pb2 # type: ignore from google.protobuf import duration_pb2 # type: ignore @@ -73,20 +88,8 @@ from google.protobuf import timestamp_pb2 # type: ignore from google.rpc import status_pb2 # type: ignore from google.type import expr_pb2 # type: ignore +import google.auth -from google.cloud.spanner_admin_database_v1.services.database_admin import ( - DatabaseAdminAsyncClient, - DatabaseAdminClient, - pagers, - transports, -) -from google.cloud.spanner_admin_database_v1.types import common, spanner_database_admin -from google.cloud.spanner_admin_database_v1.types import ( - backup_schedule as gsad_backup_schedule, -) -from google.cloud.spanner_admin_database_v1.types import backup -from google.cloud.spanner_admin_database_v1.types import backup as gsad_backup -from google.cloud.spanner_admin_database_v1.types import backup_schedule CRED_INFO_JSON = { "credential_source": "/path/to/file", diff --git a/tests/unit/gapic/spanner_admin_instance_v1/test_instance_admin.py b/tests/unit/gapic/spanner_admin_instance_v1/test_instance_admin.py index 95255b83df..d8541c2be3 100644 --- a/tests/unit/gapic/spanner_admin_instance_v1/test_instance_admin.py +++ b/tests/unit/gapic/spanner_admin_instance_v1/test_instance_admin.py @@ -23,19 +23,20 @@ except ImportError: # pragma: NO COVER import mock -from collections.abc import AsyncIterable, Iterable +import grpc +from grpc.experimental import aio +from collections.abc import Iterable, AsyncIterable +from google.protobuf import json_format import json import math - +import pytest from google.api_core import api_core_version -from google.protobuf import json_format -import grpc -from grpc.experimental import aio -from proto.marshal.rules import wrappers from proto.marshal.rules.dates import DurationRule, TimestampRule -import pytest -from requests import PreparedRequest, Request, Response +from proto.marshal.rules import wrappers +from requests import Response +from requests import Request, PreparedRequest from requests.sessions import Session +from google.protobuf import json_format try: from google.auth.aio import credentials as ga_credentials_async @@ -44,38 +45,40 @@ except ImportError: # pragma: NO COVER HAS_GOOGLE_AUTH_AIO = False -from google.api_core import ( - future, - gapic_v1, - grpc_helpers, - grpc_helpers_async, - operation, - operations_v1, - path_template, -) from google.api_core import client_options from google.api_core import exceptions as core_exceptions +from google.api_core import future +from google.api_core import gapic_v1 +from google.api_core import grpc_helpers +from google.api_core import grpc_helpers_async +from google.api_core import operation from google.api_core import operation_async # type: ignore +from google.api_core import operations_v1 +from google.api_core import path_template from google.api_core import retry as retries -import google.auth from google.auth import credentials as ga_credentials from google.auth.exceptions import MutualTLSChannelError +from google.cloud.spanner_admin_instance_v1.services.instance_admin import ( + InstanceAdminAsyncClient, +) +from google.cloud.spanner_admin_instance_v1.services.instance_admin import ( + InstanceAdminClient, +) +from google.cloud.spanner_admin_instance_v1.services.instance_admin import pagers +from google.cloud.spanner_admin_instance_v1.services.instance_admin import transports +from google.cloud.spanner_admin_instance_v1.types import common +from google.cloud.spanner_admin_instance_v1.types import spanner_instance_admin from google.iam.v1 import iam_policy_pb2 # type: ignore from google.iam.v1 import options_pb2 # type: ignore from google.iam.v1 import policy_pb2 # type: ignore from google.longrunning import operations_pb2 # type: ignore +from google.longrunning import operations_pb2 # type: ignore from google.oauth2 import service_account from google.protobuf import field_mask_pb2 # type: ignore from google.protobuf import timestamp_pb2 # type: ignore from google.type import expr_pb2 # type: ignore +import google.auth -from google.cloud.spanner_admin_instance_v1.services.instance_admin import ( - InstanceAdminAsyncClient, - InstanceAdminClient, - pagers, - transports, -) -from google.cloud.spanner_admin_instance_v1.types import common, spanner_instance_admin CRED_INFO_JSON = { "credential_source": "/path/to/file", diff --git a/tests/unit/gapic/spanner_v1/test_spanner.py b/tests/unit/gapic/spanner_v1/test_spanner.py index 234ba40260..3725489794 100644 --- a/tests/unit/gapic/spanner_v1/test_spanner.py +++ b/tests/unit/gapic/spanner_v1/test_spanner.py @@ -22,19 +22,20 @@ except ImportError: # pragma: NO COVER import mock -from collections.abc import AsyncIterable, Iterable +import grpc +from grpc.experimental import aio +from collections.abc import Iterable, AsyncIterable +from google.protobuf import json_format import json import math - +import pytest from google.api_core import api_core_version -from google.protobuf import json_format -import grpc -from grpc.experimental import aio -from proto.marshal.rules import wrappers from proto.marshal.rules.dates import DurationRule, TimestampRule -import pytest -from requests import PreparedRequest, Request, Response +from proto.marshal.rules import wrappers +from requests import Response +from requests import Request, PreparedRequest from requests.sessions import Session +from google.protobuf import json_format try: from google.auth.aio import credentials as ga_credentials_async @@ -43,35 +44,34 @@ except ImportError: # pragma: NO COVER HAS_GOOGLE_AUTH_AIO = False -from google.api_core import gapic_v1, grpc_helpers, grpc_helpers_async, path_template from google.api_core import client_options from google.api_core import exceptions as core_exceptions +from google.api_core import gapic_v1 +from google.api_core import grpc_helpers +from google.api_core import grpc_helpers_async +from google.api_core import path_template from google.api_core import retry as retries -import google.auth from google.auth import credentials as ga_credentials from google.auth.exceptions import MutualTLSChannelError +from google.cloud.spanner_v1.services.spanner import SpannerAsyncClient +from google.cloud.spanner_v1.services.spanner import SpannerClient +from google.cloud.spanner_v1.services.spanner import pagers +from google.cloud.spanner_v1.services.spanner import transports +from google.cloud.spanner_v1.types import commit_response +from google.cloud.spanner_v1.types import keys +from google.cloud.spanner_v1.types import location +from google.cloud.spanner_v1.types import mutation +from google.cloud.spanner_v1.types import result_set +from google.cloud.spanner_v1.types import spanner +from google.cloud.spanner_v1.types import transaction +from google.cloud.spanner_v1.types import type as gs_type from google.oauth2 import service_account from google.protobuf import duration_pb2 # type: ignore from google.protobuf import struct_pb2 # type: ignore from google.protobuf import timestamp_pb2 # type: ignore from google.rpc import status_pb2 # type: ignore +import google.auth -from google.cloud.spanner_v1.services.spanner import ( - SpannerAsyncClient, - SpannerClient, - pagers, - transports, -) -from google.cloud.spanner_v1.types import ( - commit_response, - keys, - location, - mutation, - result_set, - spanner, - transaction, -) -from google.cloud.spanner_v1.types import type as gs_type CRED_INFO_JSON = { "credential_source": "/path/to/file",