From 8a05177d36acbebf6dc6607cb9b7fb1578aac6de Mon Sep 17 00:00:00 2001 From: Anthonios Partheniou Date: Thu, 25 Jun 2026 15:59:13 +0000 Subject: [PATCH 1/2] feat: regenerate google-cloud-spanner --- .../spanner-integration.yaml | 32 ++++++++++++------- .release-please-bulk-manifest.json | 1 + .release-please-individual-manifest.json | 1 - librarian.yaml | 2 -- packages/google-cloud-spanner/.coveragerc | 1 + .../spanner_admin_database_v1/__init__.py | 8 ++--- .../spanner_admin_instance_v1/__init__.py | 8 ++--- packages/google-cloud-spanner/setup.py | 16 ++++++---- .../testing/constraints-3.10.txt | 12 +++---- .../testing/constraints-3.13.txt | 2 +- .../testing/constraints-3.14.txt | 2 +- release-please-bulk-config.json | 26 +++++++++++++++ release-please-individual-config.json | 26 --------------- 13 files changed, 73 insertions(+), 64 deletions(-) diff --git a/.librarian/generator-input/client-post-processing/spanner-integration.yaml b/.librarian/generator-input/client-post-processing/spanner-integration.yaml index 42b8909c01d4..f4ae29dbf851 100644 --- a/.librarian/generator-input/client-post-processing/spanner-integration.yaml +++ b/.librarian/generator-input/client-post-processing/spanner-integration.yaml @@ -125,17 +125,16 @@ replacements: before: '(?s)dependencies = \[.*?\]\nextras = \{\s*\}' after: | dependencies = [ - "google-api-core[grpc] >= 2.17.1, <3.0.0", + "google-api-core[grpc] >= 2.24.2, <3.0.0", # Exclude incompatible versions of `google-auth` # See https://github.com/googleapis/google-cloud-python/issues/12364 "google-auth >= 2.14.1, <3.0.0,!=2.24.0,!=2.25.0", "google-cloud-core >= 2.0.0, < 3.0.0", "grpcio >= 1.49.1, < 2.0.0", "grpcio >= 1.75.1, < 2.0.0; python_version >= '3.14'", - "grpc-google-iam-v1 >= 0.12.4, <1.0.0", - "proto-plus >= 1.22.3, <2.0.0", - "proto-plus >= 1.25.0, <2.0.0; python_version >= '3.13'", - "protobuf >= 4.25.8, < 8.0.0", + "grpc-google-iam-v1 >= 0.14.2, <1.0.0", + "proto-plus >= 1.26.1, <2.0.0", + "protobuf >= 6.33.5, < 8.0.0", "grpc-interceptor >= 0.15.4", "sqlparse >= 0.4.4", # Make OpenTelemetry a core dependency @@ -143,7 +142,7 @@ replacements: "opentelemetry-sdk >= 1.22.0", "opentelemetry-semantic-conventions >= 0.43b0", "opentelemetry-resourcedetector-gcp >= 1.8.0a0", - "google-cloud-monitoring >= 2.16.0", + "google-cloud-monitoring >= 2.28.0", "mmh3 >= 4.1.0", ] extras = { @@ -1397,21 +1396,21 @@ replacements: """Run all tests with core dependencies installed from source, count: 1 - paths: [packages/google-cloud-spanner/testing/constraints-3.10.txt] - before: '(?s)protobuf==4.25.8\n(?!google-cloud-core)' + before: '(?s)protobuf==6.33.5\n(?!google-cloud-core)' after: | - protobuf==4.25.8 + protobuf==6.33.5 google-cloud-core==2.0.0 - grpc-google-iam-v1==0.12.4 + grpc-google-iam-v1==0.14.2 sqlparse==0.4.4 grpc-interceptor==0.15.4 opentelemetry-api==1.22.0 opentelemetry-sdk==1.22.0 opentelemetry-semantic-conventions==0.43b0 opentelemetry-resourcedetector-gcp==1.8.0a0 - google-cloud-monitoring==2.16.0 + google-cloud-monitoring==2.28.0 mmh3==4.1.0 libcst==0.2.5 - googleapis-common-protos==1.60.0 + googleapis-common-protos==1.69.2 count: 1 - paths: [ packages/google-cloud-spanner/noxfile.py @@ -1437,4 +1436,13 @@ replacements: after: | grpcio==1.49.1 grpcio-status==1.49.1 - count: 1 \ No newline at end of file + count: 1 + - paths: [packages/google-cloud-spanner/.coveragerc] + before: | + \[report\] + show_missing = True + after: | + [report] + fail_under = 98 + show_missing = True + count: 1 diff --git a/.release-please-bulk-manifest.json b/.release-please-bulk-manifest.json index fabe44cb47af..1682eccf7f81 100644 --- a/.release-please-bulk-manifest.json +++ b/.release-please-bulk-manifest.json @@ -204,6 +204,7 @@ "packages/google-cloud-servicehealth": "0.5.0", "packages/google-cloud-shell": "1.16.0", "packages/google-cloud-source-context": "1.11.0", + "packages/google-cloud-spanner": "3.68.0", "packages/google-cloud-speech": "2.40.0", "packages/google-cloud-storage": "3.12.0", "packages/google-cloud-storage-control": "1.12.0", diff --git a/.release-please-individual-manifest.json b/.release-please-individual-manifest.json index 0f5ab7b0ed7e..34e9a7d2d829 100644 --- a/.release-please-individual-manifest.json +++ b/.release-please-individual-manifest.json @@ -3,7 +3,6 @@ "packages/google-cloud-bigtable": "2.39.0", "packages/google-cloud-compute": "1.48.0", "packages/google-cloud-firestore": "2.27.0", - "packages/google-cloud-spanner": "3.68.0", "packages/google-crc32c": "1.8.0", "packages/pandas-gbq": "0.35.0", "packages/sqlalchemy-bigquery": "1.17.0" diff --git a/librarian.yaml b/librarian.yaml index eb38359a0aa8..5253c4cefa6e 100644 --- a/librarian.yaml +++ b/librarian.yaml @@ -1937,8 +1937,6 @@ libraries: - docs/spanner_v1/table.rst - docs/spanner_v1/transaction.rst - tests/unit/gapic/conftest.py - skip_generate: true - skip_release: true python: library_type: GAPIC_COMBO opt_args_by_api: diff --git a/packages/google-cloud-spanner/.coveragerc b/packages/google-cloud-spanner/.coveragerc index 677a9927999d..4e747c9264c2 100644 --- a/packages/google-cloud-spanner/.coveragerc +++ b/packages/google-cloud-spanner/.coveragerc @@ -2,6 +2,7 @@ branch = True [report] +fail_under = 98 show_missing = True omit = google/cloud/spanner/__init__.py diff --git a/packages/google-cloud-spanner/google/cloud/spanner_admin_database_v1/__init__.py b/packages/google-cloud-spanner/google/cloud/spanner_admin_database_v1/__init__.py index 470cf062a455..7e9ebcceba0a 100644 --- a/packages/google-cloud-spanner/google/cloud/spanner_admin_database_v1/__init__.py +++ b/packages/google-cloud-spanner/google/cloud/spanner_admin_database_v1/__init__.py @@ -119,7 +119,7 @@ def parse_version_to_tuple(version_string: str): """Safely converts a semantic version string to a comparable tuple of integers. - Example: "4.25.8" -> (4, 25, 8) + Example: "6.33.5" -> (6, 33, 5) Ignores non-numeric parts and handles common version formats. Args: version_string: Version string in the format "x.y.z" or "x.y.z" @@ -148,9 +148,9 @@ def _get_version(dependency_name): return (None, "--") _dependency_package = "google.protobuf" - _next_supported_version = "4.25.8" - _next_supported_version_tuple = (4, 25, 8) - _recommendation = " (we recommend 6.x)" + _next_supported_version = "6.33.5" + _next_supported_version_tuple = (6, 33, 5) + _recommendation = " (we recommend 7.x)" (_version_used, _version_used_string) = _get_version(_dependency_package) if _version_used and _version_used < _next_supported_version_tuple: warnings.warn( diff --git a/packages/google-cloud-spanner/google/cloud/spanner_admin_instance_v1/__init__.py b/packages/google-cloud-spanner/google/cloud/spanner_admin_instance_v1/__init__.py index 09d1033f7db1..e0b4f577353e 100644 --- a/packages/google-cloud-spanner/google/cloud/spanner_admin_instance_v1/__init__.py +++ b/packages/google-cloud-spanner/google/cloud/spanner_admin_instance_v1/__init__.py @@ -91,7 +91,7 @@ def parse_version_to_tuple(version_string: str): """Safely converts a semantic version string to a comparable tuple of integers. - Example: "4.25.8" -> (4, 25, 8) + Example: "6.33.5" -> (6, 33, 5) Ignores non-numeric parts and handles common version formats. Args: version_string: Version string in the format "x.y.z" or "x.y.z" @@ -120,9 +120,9 @@ def _get_version(dependency_name): return (None, "--") _dependency_package = "google.protobuf" - _next_supported_version = "4.25.8" - _next_supported_version_tuple = (4, 25, 8) - _recommendation = " (we recommend 6.x)" + _next_supported_version = "6.33.5" + _next_supported_version_tuple = (6, 33, 5) + _recommendation = " (we recommend 7.x)" (_version_used, _version_used_string) = _get_version(_dependency_package) if _version_used and _version_used < _next_supported_version_tuple: warnings.warn( diff --git a/packages/google-cloud-spanner/setup.py b/packages/google-cloud-spanner/setup.py index e7dce1a06904..c327f46f267b 100644 --- a/packages/google-cloud-spanner/setup.py +++ b/packages/google-cloud-spanner/setup.py @@ -29,7 +29,10 @@ version = None with open(os.path.join(package_root, "google/cloud/spanner/gapic_version.py")) as fp: - version_candidates = re.findall(r"(?<=\")\d+.\d+.\d+(?=\")", fp.read()) + version_candidates = re.findall( + r"(?<=\")\d+\.\d+\.\d+[^\"\s]*(?=\")", + fp.read(), + ) assert len(version_candidates) == 1 version = version_candidates[0] @@ -39,17 +42,16 @@ release_status = "Development Status :: 5 - Production/Stable" dependencies = [ - "google-api-core[grpc] >= 2.17.1, <3.0.0", + "google-api-core[grpc] >= 2.24.2, <3.0.0", # Exclude incompatible versions of `google-auth` # See https://github.com/googleapis/google-cloud-python/issues/12364 "google-auth >= 2.14.1, <3.0.0,!=2.24.0,!=2.25.0", "google-cloud-core >= 2.0.0, < 3.0.0", "grpcio >= 1.49.1, < 2.0.0", "grpcio >= 1.75.1, < 2.0.0; python_version >= '3.14'", - "grpc-google-iam-v1 >= 0.12.4, <1.0.0", - "proto-plus >= 1.22.3, <2.0.0", - "proto-plus >= 1.25.0, <2.0.0; python_version >= '3.13'", - "protobuf >= 4.25.8, < 8.0.0", + "grpc-google-iam-v1 >= 0.14.2, <1.0.0", + "proto-plus >= 1.26.1, <2.0.0", + "protobuf >= 6.33.5, < 8.0.0", "grpc-interceptor >= 0.15.4", "sqlparse >= 0.4.4", # Make OpenTelemetry a core dependency @@ -57,7 +59,7 @@ "opentelemetry-sdk >= 1.22.0", "opentelemetry-semantic-conventions >= 0.43b0", "opentelemetry-resourcedetector-gcp >= 1.8.0a0", - "google-cloud-monitoring >= 2.16.0", + "google-cloud-monitoring >= 2.28.0", "mmh3 >= 4.1.0", ] extras = { diff --git a/packages/google-cloud-spanner/testing/constraints-3.10.txt b/packages/google-cloud-spanner/testing/constraints-3.10.txt index 77670a5b9fc6..a03479e953b7 100644 --- a/packages/google-cloud-spanner/testing/constraints-3.10.txt +++ b/packages/google-cloud-spanner/testing/constraints-3.10.txt @@ -4,21 +4,21 @@ # pinning their versions to their lower bounds. # For example, if setup.py has "google-cloud-foo >= 1.14.0, < 2.0.0", # then this file should have google-cloud-foo==1.14.0 -google-api-core==2.17.1 +google-api-core==2.24.2 google-auth==2.14.1 grpcio==1.49.1 grpcio-status==1.49.1 -proto-plus==1.22.3 -protobuf==4.25.8 +proto-plus==1.26.1 +protobuf==6.33.5 google-cloud-core==2.0.0 -grpc-google-iam-v1==0.12.4 +grpc-google-iam-v1==0.14.2 sqlparse==0.4.4 grpc-interceptor==0.15.4 opentelemetry-api==1.22.0 opentelemetry-sdk==1.22.0 opentelemetry-semantic-conventions==0.43b0 opentelemetry-resourcedetector-gcp==1.8.0a0 -google-cloud-monitoring==2.16.0 +google-cloud-monitoring==2.28.0 mmh3==4.1.0 libcst==0.2.5 -googleapis-common-protos==1.60.0 +googleapis-common-protos==1.69.2 diff --git a/packages/google-cloud-spanner/testing/constraints-3.13.txt b/packages/google-cloud-spanner/testing/constraints-3.13.txt index 1e93c60e50aa..6bd7e1f5b03d 100644 --- a/packages/google-cloud-spanner/testing/constraints-3.13.txt +++ b/packages/google-cloud-spanner/testing/constraints-3.13.txt @@ -9,4 +9,4 @@ google-api-core>=2 google-auth>=2 grpcio>=1 proto-plus>=1 -protobuf>=6 +protobuf>=7 diff --git a/packages/google-cloud-spanner/testing/constraints-3.14.txt b/packages/google-cloud-spanner/testing/constraints-3.14.txt index 1e93c60e50aa..6bd7e1f5b03d 100644 --- a/packages/google-cloud-spanner/testing/constraints-3.14.txt +++ b/packages/google-cloud-spanner/testing/constraints-3.14.txt @@ -9,4 +9,4 @@ google-api-core>=2 google-auth>=2 grpcio>=1 proto-plus>=1 -protobuf>=6 +protobuf>=7 diff --git a/release-please-bulk-config.json b/release-please-bulk-config.json index c8e66cb251b1..3a018ea6f2bc 100644 --- a/release-please-bulk-config.json +++ b/release-please-bulk-config.json @@ -2799,6 +2799,32 @@ "google/cloud/source_context_v1/gapic_version.py" ] }, + "packages/google-cloud-spanner": { + "component": "google-cloud-spanner", + "extra-files": [ + "google/cloud/spanner/gapic_version.py", + "google/cloud/spanner_admin_database/gapic_version.py", + "google/cloud/spanner_admin_database_v1/gapic_version.py", + "google/cloud/spanner_admin_instance/gapic_version.py", + "google/cloud/spanner_admin_instance_v1/gapic_version.py", + "google/cloud/spanner_v1/gapic_version.py", + { + "jsonpath": "$.clientLibrary.version", + "path": "samples/generated_samples/snippet_metadata_google.spanner.admin.database.v1.json", + "type": "json" + }, + { + "jsonpath": "$.clientLibrary.version", + "path": "samples/generated_samples/snippet_metadata_google.spanner.admin.instance.v1.json", + "type": "json" + }, + { + "jsonpath": "$.clientLibrary.version", + "path": "samples/generated_samples/snippet_metadata_google.spanner.v1.json", + "type": "json" + } + ] + }, "packages/google-cloud-speech": { "component": "google-cloud-speech", "extra-files": [ diff --git a/release-please-individual-config.json b/release-please-individual-config.json index 2d6e68f7402a..1129cf817736 100644 --- a/release-please-individual-config.json +++ b/release-please-individual-config.json @@ -51,32 +51,6 @@ } ] }, - "packages/google-cloud-spanner": { - "component": "google-cloud-spanner", - "extra-files": [ - "google/cloud/spanner/gapic_version.py", - "google/cloud/spanner_admin_database/gapic_version.py", - "google/cloud/spanner_admin_database_v1/gapic_version.py", - "google/cloud/spanner_admin_instance/gapic_version.py", - "google/cloud/spanner_admin_instance_v1/gapic_version.py", - "google/cloud/spanner_v1/gapic_version.py", - { - "jsonpath": "$.clientLibrary.version", - "path": "samples/generated_samples/snippet_metadata_google.spanner.admin.database.v1.json", - "type": "json" - }, - { - "jsonpath": "$.clientLibrary.version", - "path": "samples/generated_samples/snippet_metadata_google.spanner.admin.instance.v1.json", - "type": "json" - }, - { - "jsonpath": "$.clientLibrary.version", - "path": "samples/generated_samples/snippet_metadata_google.spanner.v1.json", - "type": "json" - } - ] - }, "packages/google-crc32c": { "component": "google-crc32c" }, From 7a23d2063c0a0305ffc36f000fb5e6ba7f4b3b8d Mon Sep 17 00:00:00 2001 From: Anthonios Partheniou Date: Thu, 25 Jun 2026 18:09:29 +0000 Subject: [PATCH 2/2] fix test --- packages/google-cloud-spanner/tests/system/_helpers.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/google-cloud-spanner/tests/system/_helpers.py b/packages/google-cloud-spanner/tests/system/_helpers.py index b02b65ae29b8..4cd9879e5d2d 100644 --- a/packages/google-cloud-spanner/tests/system/_helpers.py +++ b/packages/google-cloud-spanner/tests/system/_helpers.py @@ -15,9 +15,10 @@ import operator import os import time +import uuid from google.api_core import exceptions -from test_utils import retry, system +from test_utils import retry from google.cloud.spanner_v1 import instance as instance_mod from tests import _fixtures @@ -159,7 +160,9 @@ def cleanup_old_instances(spanner_client): def unique_id(prefix, separator="-"): - return f"{prefix}{system.unique_resource_id(separator)}" + # Database name size: Spanner database names are limited to 30 characters. + # See: https://docs.cloud.google.com/spanner/docs/reference/rpc/google.spanner.admin.database.v1#createdatabaserequest + return f"{prefix}{separator}{uuid.uuid4().hex[:13]}" class FauxCall: