From 07ee6c75a549aa79239f07ce6905c1a3126e33bc Mon Sep 17 00:00:00 2001 From: Anthonios Partheniou Date: Tue, 2 Jun 2026 20:20:29 +0000 Subject: [PATCH 1/4] fix: bump grpcio to 1.59.0 --- .../pubsub-integration.yaml | 19 ++-------- .../spanner-integration.yaml | 9 ++--- .../storage-integration.yaml | 4 +-- packages/bigquery-magics/noxfile.py | 2 -- packages/bigquery-magics/setup.py | 3 +- .../gapic/ads-templates/setup.py.j2 | 2 +- packages/gapic-generator/noxfile.py | 5 +-- packages/gapic-generator/setup.py | 2 +- .../docfx_yaml/markdown_utils.py | 7 ++-- packages/gcp-sphinx-docfx-yaml/noxfile.py | 6 ++-- packages/gcp-sphinx-docfx-yaml/setup.py | 4 +-- .../tests/testdata/auth/setup.py | 6 +--- .../tests/testdata/gapic-auto/setup.py | 5 +-- .../tests/testdata/gapic-combo/setup.py | 9 ++--- .../tests/testdata/handwritten/setup.py | 5 +-- .../tests/testdata/non-cloud/setup.py | 5 +-- packages/google-api-core/pyproject.toml | 6 ++-- .../testing/constraints-3.10.txt | 4 +-- .../testing/constraints-async-rest-3.10.txt | 4 +-- .../noxfile.py | 2 -- .../setup.py | 3 +- .../testing/constraints-3.10.txt | 9 +++++ .../testing/constraints-3.9.txt | 9 ----- packages/google-cloud-audit-log/noxfile.py | 2 -- packages/google-cloud-audit-log/setup.py | 3 +- .../testing/constraints-3.10.txt | 9 +++++ .../testing/constraints-3.9.txt | 35 ------------------- .../samples/pyarrow/noxfile.py | 2 +- .../samples/quickstart/noxfile.py | 2 +- .../samples/snippets/noxfile.py | 2 +- .../samples/to_dataframe/noxfile.py | 2 +- packages/google-cloud-bigquery/pyproject.toml | 6 ++-- .../testing/constraints-3.10.txt | 4 +-- packages/google-cloud-core/setup.py | 5 +-- .../testing/constraints-3.10.txt | 4 +-- packages/google-cloud-logging/constraints.txt | 1 - packages/google-cloud-pubsub/setup.py | 5 +-- .../testing/constraints-3.10.txt | 4 +-- .../noxfile.py | 12 ------- .../samples/samples/noxfile.py | 2 +- packages/google-cloud-spanner/setup.py | 2 +- .../testing/constraints-3.10.txt | 4 +-- packages/google-cloud-storage/setup.py | 4 +-- packages/googleapis-common-protos/noxfile.py | 2 -- .../googleapis-common-protos/pyproject.toml | 5 ++- ...txt => constraints-3.10-python-pubsub.txt} | 2 +- .../testing/constraints-3.10.txt | 9 +++++ .../testing/constraints-3.9.txt | 9 ----- packages/grpc-google-iam-v1/noxfile.py | 2 -- packages/grpc-google-iam-v1/pyproject.toml | 5 ++- ...txt => constraints-3.10-python-pubsub.txt} | 2 +- .../testing/constraints-3.10.txt | 9 +++++ .../testing/constraints-3.9-python-pubsub.txt | 9 ----- .../proto-plus/testing/constraints-3.10.txt | 9 +++++ .../proto-plus/testing/constraints-3.9.txt | 9 ----- packages/sqlalchemy-bigquery/setup.py | 3 +- .../testing/constraints-3.10.txt | 2 +- 57 files changed, 112 insertions(+), 205 deletions(-) delete mode 100644 packages/google-cloud-access-context-manager/testing/constraints-3.9.txt delete mode 100644 packages/google-cloud-audit-log/testing/constraints-3.9.txt rename packages/googleapis-common-protos/testing/{constraints-3.9-python-pubsub.txt => constraints-3.10-python-pubsub.txt} (95%) delete mode 100644 packages/googleapis-common-protos/testing/constraints-3.9.txt rename packages/grpc-google-iam-v1/testing/{constraints-3.9.txt => constraints-3.10-python-pubsub.txt} (95%) delete mode 100644 packages/grpc-google-iam-v1/testing/constraints-3.9-python-pubsub.txt delete mode 100644 packages/proto-plus/testing/constraints-3.9.txt diff --git a/.librarian/generator-input/client-post-processing/pubsub-integration.yaml b/.librarian/generator-input/client-post-processing/pubsub-integration.yaml index 97e87b026ae5..2944393f88df 100644 --- a/.librarian/generator-input/client-post-processing/pubsub-integration.yaml +++ b/.librarian/generator-input/client-post-processing/pubsub-integration.yaml @@ -374,7 +374,8 @@ replacements: - "packages/google-cloud-pubsub/setup.py" before: '([ \t]+)("grpc-google-iam-v1.*",\n)\]\nextras = \{\}' after: |- - \g<1>\g<2>\g<1>"grpcio-status >= 1.51.3", + \g<1>\g<2>\g<1>"grpcio-status >= 1.59.0", + \g<1>"grpcio-status >= 1.75.1, < 2.0.0; python_version >= '3.14'", \g<1>"opentelemetry-api >= 1.27.0", \g<1>"opentelemetry-sdk >= 1.27.0", ] @@ -509,21 +510,7 @@ replacements: before: 'grpc-google-iam-v1==0\.14\.0\n(?!grpcio-status)' after: |- grpc-google-iam-v1==0.14.0 - grpcio-status==1.51.3 + grpcio-status==1.59.0 opentelemetry-api==1.27.0 opentelemetry-sdk==1.27.0 count: 1 - - - paths: - - "packages/google-cloud-pubsub/testing/constraints-3.10.txt" - before: 'grpcio==1.59.0' - after: 'grpcio==1.51.3' - count: 1 - - - paths: - - "packages/google-cloud-pubsub/setup.py" - before: '([ \t]+)"grpcio >= [0-9\.]+, < 2\.0\.0",\n(?:[ \t]*)"grpcio >= 1\.75\.1, < 2\.0\.0; python_version >= ''3\.14''",\n' - after: |- - \g<1>"grpcio >= 1.51.3, < 2.0.0; python_version < '3.14'", - \g<1>"grpcio >= 1.75.1, < 2.0.0; python_version >= '3.14'", - count: 1 diff --git a/.librarian/generator-input/client-post-processing/spanner-integration.yaml b/.librarian/generator-input/client-post-processing/spanner-integration.yaml index f00d166046ff..55ac464b001b 100644 --- a/.librarian/generator-input/client-post-processing/spanner-integration.yaml +++ b/.librarian/generator-input/client-post-processing/spanner-integration.yaml @@ -130,7 +130,7 @@ replacements: # 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.59.0, < 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", @@ -1390,6 +1390,7 @@ replacements: protobuf==4.25.8 google-cloud-core==2.0.0 grpc-google-iam-v1==0.12.4 + grpcio-status==1.59.0 sqlparse==0.4.4 grpc-interceptor==0.15.4 opentelemetry-api==1.22.0 @@ -1401,9 +1402,3 @@ replacements: libcst==0.2.5 googleapis-common-protos==1.60.0 count: 1 - - paths: [packages/google-cloud-spanner/testing/constraints-3.10.txt] - before: 'grpcio==1.59.0\n(?!grpcio-status)' - after: | - grpcio==1.49.1 - grpcio-status==1.49.1 - count: 1 \ No newline at end of file diff --git a/.librarian/generator-input/client-post-processing/storage-integration.yaml b/.librarian/generator-input/client-post-processing/storage-integration.yaml index 55a062f43071..1d92f8ae1c3e 100644 --- a/.librarian/generator-input/client-post-processing/storage-integration.yaml +++ b/.librarian/generator-input/client-post-processing/storage-integration.yaml @@ -597,9 +597,9 @@ replacements: # experimental in this SDK. More info in b/465352227 "grpc": [ "google-api-core[grpc] >= 2.27.0, < 3.0.0", - "grpcio >= 1.59.0, < 2.0.0; python_version < '3.14'", + "grpcio >= 1.59.0, < 2.0.0", "grpcio >= 1.75.1, < 2.0.0; python_version >= '3.14'", - "grpcio-status >= 1.59.0, < 2.0.0; python_version < '3.14'", + "grpcio-status >= 1.59.0, < 2.0.0", "grpcio-status >= 1.75.1, < 2.0.0; python_version >= '3.14'", "proto-plus >= 1.22.3, <2.0.0; python_version < '3.13'", "proto-plus >= 1.25.0, <2.0.0; python_version >= '3.13'", diff --git a/packages/bigquery-magics/noxfile.py b/packages/bigquery-magics/noxfile.py index f275406b6905..8064fb3f088b 100644 --- a/packages/bigquery-magics/noxfile.py +++ b/packages/bigquery-magics/noxfile.py @@ -279,8 +279,6 @@ def install_systemtest_dependencies(session, with_extras, *constraints): @nox.parametrize("with_extras", [True, False]) def system(session, with_extras): """Run the system test suite.""" - if session.python == "3.9": - session.skip("Python 3.9 is not supported.") constraints_path = str( CURRENT_DIRECTORY / "testing" / f"constraints-{session.python}.txt" diff --git a/packages/bigquery-magics/setup.py b/packages/bigquery-magics/setup.py index 763ca3afb9bc..c16c9102ee42 100644 --- a/packages/bigquery-magics/setup.py +++ b/packages/bigquery-magics/setup.py @@ -52,8 +52,7 @@ # See: https://github.com/googleapis/python-bigquery/issues/83 The # grpc.Channel.close() method isn't added until 1.32.0. # https://github.com/grpc/grpc/pull/15254 - "grpcio >= 1.47.0, < 2.0.0", - "grpcio >= 1.49.1, < 2.0.0; python_version >= '3.11' and python_version < '3.14'", + "grpcio >= 1.59.0, < 2.0.0", "grpcio >= 1.75.1, < 2.0.0; python_version >= '3.14'", ], "bigframes": ["bigframes >= 1.17.0"], diff --git a/packages/gapic-generator/gapic/ads-templates/setup.py.j2 b/packages/gapic-generator/gapic/ads-templates/setup.py.j2 index da9c3b995396..5c4a13448ff5 100644 --- a/packages/gapic-generator/gapic/ads-templates/setup.py.j2 +++ b/packages/gapic-generator/gapic/ads-templates/setup.py.j2 @@ -32,7 +32,7 @@ dependencies = [ "google-api-core[grpc] >= 2.24.2, < 3.0.0", "google-auth >= 2.14.1, <3.0.0", "googleapis-common-protos >= 1.53.0", - "grpcio >= 1.10.0", + "grpcio >= 1.59.0", "proto-plus >= 1.26.1, <2.0.0", "protobuf >= 6.33.5, < 8.0.0", {% if api.requires_package(('google', 'iam', 'v1')) %} diff --git a/packages/gapic-generator/noxfile.py b/packages/gapic-generator/noxfile.py index 8ef965740c2b..6471fe75dfea 100644 --- a/packages/gapic-generator/noxfile.py +++ b/packages/gapic-generator/noxfile.py @@ -14,7 +14,7 @@ # Helpful notes for local usage: # unset PYENV_VERSION -# pyenv local 3.14.1 3.13.10 3.12.11 3.11.4 3.10.12 3.9.17 +# pyenv local 3.14.1 3.13.10 3.12.11 3.11.4 3.10.12 # PIP_INDEX_URL=https://pypi.org/simple nox from __future__ import absolute_import @@ -44,7 +44,6 @@ RUFF_EXCLUDES = "*golden*,*pb2.py,*pb2.pyi" ALL_PYTHON = ( - "3.9", "3.10", "3.11", "3.12", @@ -58,8 +57,6 @@ @nox.session(python=ALL_PYTHON) def unit(session): """Run the unit test suite.""" - if session.python == "3.9": - session.skip("Skipping Python 3.9 unit tests temporarily.") session.install( # TODO(https://github.com/googleapis/gapic-generator-python/issues/2478): # Temporarily pin coverage to 7.11.0 diff --git a/packages/gapic-generator/setup.py b/packages/gapic-generator/setup.py index a1646a992684..38a736822d9c 100644 --- a/packages/gapic-generator/setup.py +++ b/packages/gapic-generator/setup.py @@ -30,7 +30,7 @@ "click >= 6.7", "google-api-core[grpc] >= 2.24.2, < 3.0.0", "googleapis-common-protos >= 1.55.0, < 2.0.0", - "grpcio >= 1.24.3, < 2.0.0", + "grpcio >= 1.59.0, < 2.0.0", # 2.11.0 is required which adds the `default` argument to `jinja-filters.map()` # https://jinja.palletsprojects.com/en/3.0.x/templates/#jinja-filters.map # https://jinja.palletsprojects.com/en/2.11.x/changelog/#version-2-11-0 diff --git a/packages/gcp-sphinx-docfx-yaml/docfx_yaml/markdown_utils.py b/packages/gcp-sphinx-docfx-yaml/docfx_yaml/markdown_utils.py index 237f972d63a0..42c018cf77c5 100644 --- a/packages/gcp-sphinx-docfx-yaml/docfx_yaml/markdown_utils.py +++ b/packages/gcp-sphinx-docfx-yaml/docfx_yaml/markdown_utils.py @@ -307,9 +307,10 @@ def _merge_markdown_content( content before the base file content. """ try: - with open(base_file, "r+") as base, open( - additional_content_file, "r" - ) as additional_content: + with ( + open(base_file, "r+") as base, + open(additional_content_file, "r") as additional_content, + ): file_content = ( f"{additional_content.read()}\n{base.read()}" if prepend_additional_content diff --git a/packages/gcp-sphinx-docfx-yaml/noxfile.py b/packages/gcp-sphinx-docfx-yaml/noxfile.py index 7e17f37c8ffa..b616bf4bc119 100644 --- a/packages/gcp-sphinx-docfx-yaml/noxfile.py +++ b/packages/gcp-sphinx-docfx-yaml/noxfile.py @@ -17,7 +17,7 @@ import nox DEFAULT_PYTHON_VERSION = "3.14" -UNIT_TEST_PYTHON_VERSIONS = ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] +UNIT_TEST_PYTHON_VERSIONS = ["3.10", "3.11", "3.12", "3.13", "3.14"] RUFF_VERSION = "ruff==0.14.14" ALL_PYTHON = list(UNIT_TEST_PYTHON_VERSIONS) @@ -135,10 +135,10 @@ def lint_setup_py(session): @nox.session(python=UNIT_TEST_PYTHON_VERSIONS) def unit(session): """Run unit tests.""" - # Re-enable 3.8, 3.9, 3.11, 3.12, and 3.13 after environment verification. + # Re-enable 3.11, 3.12, and 3.13 after environment verification. # TODO(https://github.com/googleapis/google-cloud-python/issues/16176): # Track 3.14 compatibility as upstream dependencies stabilize. - _skip_python_session(session, ["3.7", "3.8", "3.9", "3.11", "3.12", "3.13", "3.14"]) + _skip_python_session(session, ["3.11", "3.12", "3.13", "3.14"]) session.install("-r", "requirements.txt") session.install("pytest") session.run("pytest", "tests") diff --git a/packages/gcp-sphinx-docfx-yaml/setup.py b/packages/gcp-sphinx-docfx-yaml/setup.py index 7218b612971f..da324cdc3cd9 100644 --- a/packages/gcp-sphinx-docfx-yaml/setup.py +++ b/packages/gcp-sphinx-docfx-yaml/setup.py @@ -56,9 +56,9 @@ package_dir={"": "."}, packages=packages, install_requires=dependencies, - python_requires=">=3.8", + python_requires=">=3.10", classifiers=[ - "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.10", ], include_package_data=True, zip_safe=False, diff --git a/packages/gcp-sphinx-docfx-yaml/tests/testdata/auth/setup.py b/packages/gcp-sphinx-docfx-yaml/tests/testdata/auth/setup.py index 4ee31dc6fd57..f0df6facfd98 100644 --- a/packages/gcp-sphinx-docfx-yaml/tests/testdata/auth/setup.py +++ b/packages/gcp-sphinx-docfx-yaml/tests/testdata/auth/setup.py @@ -43,15 +43,11 @@ "google-oauthlib-tool=google_auth_oauthlib.tool.__main__:main [tool]" ] }, - python_requires=">=3.6", + python_requires=">=3.10", license="Apache 2.0", keywords="google auth oauth client oauthlib", classifiers=[ "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Development Status :: 5 - Production/Stable", diff --git a/packages/gcp-sphinx-docfx-yaml/tests/testdata/gapic-auto/setup.py b/packages/gcp-sphinx-docfx-yaml/tests/testdata/gapic-auto/setup.py index ff386677707e..c930bc3ce16f 100644 --- a/packages/gcp-sphinx-docfx-yaml/tests/testdata/gapic-auto/setup.py +++ b/packages/gcp-sphinx-docfx-yaml/tests/testdata/gapic-auto/setup.py @@ -85,9 +85,6 @@ "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Operating System :: OS Independent", "Topic :: Internet", @@ -97,7 +94,7 @@ namespace_packages=namespaces, install_requires=dependencies, extras_require=extras, - python_requires=">=3.7", + python_requires=">=3.10", scripts=["scripts/fixup_keywords.py"], include_package_data=True, zip_safe=False, diff --git a/packages/gcp-sphinx-docfx-yaml/tests/testdata/gapic-combo/setup.py b/packages/gcp-sphinx-docfx-yaml/tests/testdata/gapic-combo/setup.py index 9a4e51a30d91..5f60b6329ec1 100644 --- a/packages/gcp-sphinx-docfx-yaml/tests/testdata/gapic-combo/setup.py +++ b/packages/gcp-sphinx-docfx-yaml/tests/testdata/gapic-combo/setup.py @@ -28,12 +28,12 @@ # 'Development Status :: 5 - Production/Stable' release_status = "Development Status :: 5 - Production/Stable" dependencies = [ - "grpcio >= 1.38.1, < 2.0dev", # https://github.com/googleapis/python-pubsub/issues/414 + "grpcio >= 1.59.0, < 2.0dev", # https://github.com/googleapis/python-pubsub/issues/414 "google-api-core[grpc] >= 1.32.0, <3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*", "proto-plus >= 1.22.0, <2.0.0dev", "protobuf>=3.19.5,<5.0.0dev,!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5", "grpc-google-iam-v1 >=0.12.4, <1.0.0dev", - "grpcio-status >= 1.16.0", + "grpcio-status >= 1.59.0", ] extras = {"libcst": "libcst >= 0.3.10"} @@ -75,9 +75,6 @@ "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Operating System :: OS Independent", "Topic :: Internet", @@ -87,7 +84,7 @@ namespace_packages=namespaces, install_requires=dependencies, extras_require=extras, - python_requires=">=3.7", + python_requires=">=3.10", scripts=["scripts/fixup_pubsub_v1_keywords.py"], include_package_data=True, zip_safe=False, diff --git a/packages/gcp-sphinx-docfx-yaml/tests/testdata/handwritten/setup.py b/packages/gcp-sphinx-docfx-yaml/tests/testdata/handwritten/setup.py index 09762035d1c3..c9a6e9f17c23 100644 --- a/packages/gcp-sphinx-docfx-yaml/tests/testdata/handwritten/setup.py +++ b/packages/gcp-sphinx-docfx-yaml/tests/testdata/handwritten/setup.py @@ -76,9 +76,6 @@ "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Operating System :: OS Independent", "Topic :: Internet", @@ -88,7 +85,7 @@ namespace_packages=namespaces, install_requires=dependencies, extras_require=extras, - python_requires=">=3.7", + python_requires=">=3.10", include_package_data=True, zip_safe=False, ) diff --git a/packages/gcp-sphinx-docfx-yaml/tests/testdata/non-cloud/setup.py b/packages/gcp-sphinx-docfx-yaml/tests/testdata/non-cloud/setup.py index 0fad7026b98d..7a47924d05ae 100644 --- a/packages/gcp-sphinx-docfx-yaml/tests/testdata/non-cloud/setup.py +++ b/packages/gcp-sphinx-docfx-yaml/tests/testdata/non-cloud/setup.py @@ -84,9 +84,6 @@ "License :: OSI Approved :: BSD License", "Programming Language :: Python", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Operating System :: OS Independent", @@ -97,7 +94,7 @@ packages=packages, install_requires=dependencies, extras_require=extras, - python_requires=">=3.7", + python_requires=">=3.10", include_package_data=True, zip_safe=False, ) diff --git a/packages/google-api-core/pyproject.toml b/packages/google-api-core/pyproject.toml index 28c42be84295..1cc9a964348e 100644 --- a/packages/google-api-core/pyproject.toml +++ b/packages/google-api-core/pyproject.toml @@ -60,11 +60,9 @@ Repository = "https://github.com/googleapis/google-cloud-python" [project.optional-dependencies] async_rest = ["google-auth[aiohttp] >= 2.14.1, < 3.0.0", "aiohttp >= 3.13.4"] grpc = [ - "grpcio >= 1.41.0, < 2.0.0", - "grpcio >= 1.49.1, < 2.0.0; python_version >= '3.11'", + "grpcio >= 1.59.0, < 2.0.0", "grpcio >= 1.75.1, < 2.0.0; python_version >= '3.14'", - "grpcio-status >= 1.41.0, < 2.0.0", - "grpcio-status >= 1.49.1, < 2.0.0; python_version >= '3.11'", + "grpcio-status >= 1.59.0, < 2.0.0", "grpcio-status >= 1.75.1, < 2.0.0; python_version >= '3.14'", ] diff --git a/packages/google-api-core/testing/constraints-3.10.txt b/packages/google-api-core/testing/constraints-3.10.txt index 4b3f2d263eef..b501dd49a4f4 100644 --- a/packages/google-api-core/testing/constraints-3.10.txt +++ b/packages/google-api-core/testing/constraints-3.10.txt @@ -9,6 +9,6 @@ googleapis-common-protos==1.63.2 protobuf==5.29.6 google-auth==2.14.1 requests==2.33.0 -grpcio==1.41.0 -grpcio-status==1.41.0 +grpcio==1.59.0 +grpcio-status==1.59.0 proto-plus==1.24.0 diff --git a/packages/google-api-core/testing/constraints-async-rest-3.10.txt b/packages/google-api-core/testing/constraints-async-rest-3.10.txt index f1b6af2fcd94..557f4206e148 100644 --- a/packages/google-api-core/testing/constraints-async-rest-3.10.txt +++ b/packages/google-api-core/testing/constraints-async-rest-3.10.txt @@ -9,7 +9,7 @@ googleapis-common-protos==1.63.2 protobuf==5.29.6 google-auth==2.14.1 requests==2.33.0 -grpcio==1.41.0 -grpcio-status==1.41.0 +grpcio==1.59.0 +grpcio-status==1.59.0 proto-plus==1.24.0 aiohttp==3.13.4 diff --git a/packages/google-cloud-access-context-manager/noxfile.py b/packages/google-cloud-access-context-manager/noxfile.py index b6ae8c821dca..ab17625e3f2e 100644 --- a/packages/google-cloud-access-context-manager/noxfile.py +++ b/packages/google-cloud-access-context-manager/noxfile.py @@ -32,7 +32,6 @@ LINT_PATHS = ["docs", "google", "tests", "noxfile.py", "setup.py"] UNIT_TEST_PYTHON_VERSIONS: List[str] = [ - "3.9", "3.10", "3.11", "3.12", @@ -56,7 +55,6 @@ UNIT_TEST_EXTRAS_BY_PYTHON: Dict[str, List[str]] = {} SYSTEM_TEST_PYTHON_VERSIONS: List[str] = [ - "3.9", "3.10", "3.11", "3.12", diff --git a/packages/google-cloud-access-context-manager/setup.py b/packages/google-cloud-access-context-manager/setup.py index 94c032210fb2..f4febf1d15c3 100644 --- a/packages/google-cloud-access-context-manager/setup.py +++ b/packages/google-cloud-access-context-manager/setup.py @@ -55,7 +55,6 @@ "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", @@ -67,7 +66,7 @@ platforms="Posix; MacOS X; Windows", packages=find_namespace_packages(exclude=("tests*", "testing*")), install_requires=dependencies, - python_requires=">=3.9", + python_requires=">=3.10", include_package_data=True, zip_safe=False, ) diff --git a/packages/google-cloud-access-context-manager/testing/constraints-3.10.txt b/packages/google-cloud-access-context-manager/testing/constraints-3.10.txt index e69de29bb2d1..2b0e26586a65 100644 --- a/packages/google-cloud-access-context-manager/testing/constraints-3.10.txt +++ b/packages/google-cloud-access-context-manager/testing/constraints-3.10.txt @@ -0,0 +1,9 @@ +# This constraints file is used to check that lower bounds +# are correct in setup.py +# List *all* library dependencies and extras in this file. +# Pin the version to the lower bound. +# +# e.g., if setup.py has "foo >= 1.14.0, < 2.0.0dev", +# Then this file should have foo==1.14.0 +protobuf==4.25.8 +google-api-core==2.11.0 diff --git a/packages/google-cloud-access-context-manager/testing/constraints-3.9.txt b/packages/google-cloud-access-context-manager/testing/constraints-3.9.txt deleted file mode 100644 index 2b0e26586a65..000000000000 --- a/packages/google-cloud-access-context-manager/testing/constraints-3.9.txt +++ /dev/null @@ -1,9 +0,0 @@ -# This constraints file is used to check that lower bounds -# are correct in setup.py -# List *all* library dependencies and extras in this file. -# Pin the version to the lower bound. -# -# e.g., if setup.py has "foo >= 1.14.0, < 2.0.0dev", -# Then this file should have foo==1.14.0 -protobuf==4.25.8 -google-api-core==2.11.0 diff --git a/packages/google-cloud-audit-log/noxfile.py b/packages/google-cloud-audit-log/noxfile.py index 4724255759ff..f35f358125a4 100644 --- a/packages/google-cloud-audit-log/noxfile.py +++ b/packages/google-cloud-audit-log/noxfile.py @@ -32,7 +32,6 @@ LINT_PATHS = ["docs", "google", "tests", "noxfile.py", "setup.py"] UNIT_TEST_PYTHON_VERSIONS: List[str] = [ - "3.9", "3.10", "3.11", "3.12", @@ -56,7 +55,6 @@ UNIT_TEST_EXTRAS_BY_PYTHON: Dict[str, List[str]] = {} SYSTEM_TEST_PYTHON_VERSIONS: List[str] = [ - "3.9", "3.10", "3.11", "3.12", diff --git a/packages/google-cloud-audit-log/setup.py b/packages/google-cloud-audit-log/setup.py index cc263435b60b..de4e89c9d70c 100644 --- a/packages/google-cloud-audit-log/setup.py +++ b/packages/google-cloud-audit-log/setup.py @@ -45,7 +45,6 @@ "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", @@ -59,7 +58,7 @@ install_requires=dependencies, license="Apache-2.0", packages=find_namespace_packages(exclude=("tests*", "testing*")), - python_requires=">=3.9", + python_requires=">=3.10", url="https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-audit-log", include_package_data=True, ) diff --git a/packages/google-cloud-audit-log/testing/constraints-3.10.txt b/packages/google-cloud-audit-log/testing/constraints-3.10.txt index 6d5e14bcf4a0..2cea8ffcdad0 100644 --- a/packages/google-cloud-audit-log/testing/constraints-3.10.txt +++ b/packages/google-cloud-audit-log/testing/constraints-3.10.txt @@ -11,3 +11,12 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. +# +# This constraints file is used to check that lower bounds +# are correct in setup.py +# List all library dependencies and extras in this file. +# Pin the version to the lower bound. +# e.g., if setup.py has "google-cloud-foo >= 1.14.0, < 2.0.0dev", +# Then this file should have google-cloud-foo==1.14.0 +protobuf==4.25.8 +googleapis-common-protos==1.63.2 diff --git a/packages/google-cloud-audit-log/testing/constraints-3.9.txt b/packages/google-cloud-audit-log/testing/constraints-3.9.txt deleted file mode 100644 index 35307162417e..000000000000 --- a/packages/google-cloud-audit-log/testing/constraints-3.9.txt +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright 2024 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Copyright 2024 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# This constraints file is used to check that lower bounds -# are correct in setup.py -# List all library dependencies and extras in this file. -# Pin the version to the lower bound. -# e.g., if setup.py has "google-cloud-foo >= 1.14.0, < 2.0.0dev", -# Then this file should have google-cloud-foo==1.14.0 -protobuf==4.25.8 -googleapis-common-protos==1.63.2 diff --git a/packages/google-cloud-bigquery-storage/samples/pyarrow/noxfile.py b/packages/google-cloud-bigquery-storage/samples/pyarrow/noxfile.py index c0e60097b353..a634fdb01cb3 100644 --- a/packages/google-cloud-bigquery-storage/samples/pyarrow/noxfile.py +++ b/packages/google-cloud-bigquery-storage/samples/pyarrow/noxfile.py @@ -88,7 +88,7 @@ def get_pytest_env_vars() -> Dict[str, str]: # DO NOT EDIT - automatically generated. # All versions used to test samples. -ALL_VERSIONS = ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] +ALL_VERSIONS = ["3.10", "3.11", "3.12", "3.13"] # Any default versions that should be ignored. IGNORED_VERSIONS = TEST_CONFIG["ignored_versions"] diff --git a/packages/google-cloud-bigquery-storage/samples/quickstart/noxfile.py b/packages/google-cloud-bigquery-storage/samples/quickstart/noxfile.py index c0e60097b353..a634fdb01cb3 100644 --- a/packages/google-cloud-bigquery-storage/samples/quickstart/noxfile.py +++ b/packages/google-cloud-bigquery-storage/samples/quickstart/noxfile.py @@ -88,7 +88,7 @@ def get_pytest_env_vars() -> Dict[str, str]: # DO NOT EDIT - automatically generated. # All versions used to test samples. -ALL_VERSIONS = ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] +ALL_VERSIONS = ["3.10", "3.11", "3.12", "3.13"] # Any default versions that should be ignored. IGNORED_VERSIONS = TEST_CONFIG["ignored_versions"] diff --git a/packages/google-cloud-bigquery-storage/samples/snippets/noxfile.py b/packages/google-cloud-bigquery-storage/samples/snippets/noxfile.py index c0e60097b353..a634fdb01cb3 100644 --- a/packages/google-cloud-bigquery-storage/samples/snippets/noxfile.py +++ b/packages/google-cloud-bigquery-storage/samples/snippets/noxfile.py @@ -88,7 +88,7 @@ def get_pytest_env_vars() -> Dict[str, str]: # DO NOT EDIT - automatically generated. # All versions used to test samples. -ALL_VERSIONS = ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] +ALL_VERSIONS = ["3.10", "3.11", "3.12", "3.13"] # Any default versions that should be ignored. IGNORED_VERSIONS = TEST_CONFIG["ignored_versions"] diff --git a/packages/google-cloud-bigquery-storage/samples/to_dataframe/noxfile.py b/packages/google-cloud-bigquery-storage/samples/to_dataframe/noxfile.py index c0e60097b353..a634fdb01cb3 100644 --- a/packages/google-cloud-bigquery-storage/samples/to_dataframe/noxfile.py +++ b/packages/google-cloud-bigquery-storage/samples/to_dataframe/noxfile.py @@ -88,7 +88,7 @@ def get_pytest_env_vars() -> Dict[str, str]: # DO NOT EDIT - automatically generated. # All versions used to test samples. -ALL_VERSIONS = ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] +ALL_VERSIONS = ["3.10", "3.11", "3.12", "3.13"] # Any default versions that should be ignored. IGNORED_VERSIONS = TEST_CONFIG["ignored_versions"] diff --git a/packages/google-cloud-bigquery/pyproject.toml b/packages/google-cloud-bigquery/pyproject.toml index 406872e9d1f4..6fa28c80fa53 100644 --- a/packages/google-cloud-bigquery/pyproject.toml +++ b/packages/google-cloud-bigquery/pyproject.toml @@ -66,16 +66,14 @@ bqstorage = [ # See: https://github.com/googleapis/python-bigquery/issues/83 The # grpc.Channel.close() method isn't added until 1.32.0. # https://github.com/grpc/grpc/pull/15254 - "grpcio >= 1.47.0, < 2.0.0", - "grpcio >= 1.49.1, < 2.0.0; python_version >= '3.11'", + "grpcio >= 1.59.0, < 2.0.0", "grpcio >= 1.75.1, < 2.0.0; python_version >= '3.14'", "pyarrow >= 4.0.0", ] pandas = [ "pandas >= 1.3.0", "pandas-gbq >= 0.26.1", - "grpcio >= 1.47.0, < 2.0.0", - "grpcio >= 1.49.1, < 2.0.0; python_version >= '3.11'", + "grpcio >= 1.59.0, < 2.0.0", "grpcio >= 1.75.1, < 2.0.0; python_version >= '3.14'", "pyarrow >= 3.0.0", "db-dtypes >= 1.0.4, < 2.0.0", diff --git a/packages/google-cloud-bigquery/testing/constraints-3.10.txt b/packages/google-cloud-bigquery/testing/constraints-3.10.txt index 276999e72d4d..2a8a984d1857 100644 --- a/packages/google-cloud-bigquery/testing/constraints-3.10.txt +++ b/packages/google-cloud-bigquery/testing/constraints-3.10.txt @@ -6,8 +6,8 @@ packaging==24.2.0 python-dateutil==2.8.2 requests==2.33.0 google-cloud-bigquery-storage==2.18.0 -grpcio==1.47.0 -grpcio-status==1.47.0 +grpcio==1.59.0 +grpcio-status==1.59.0 pyarrow==6.0.0 pandas==1.3.5 pandas-gbq==0.26.1 diff --git a/packages/google-cloud-core/setup.py b/packages/google-cloud-core/setup.py index 360fdf4cccb5..ed6d9d2f2b72 100644 --- a/packages/google-cloud-core/setup.py +++ b/packages/google-cloud-core/setup.py @@ -33,9 +33,10 @@ ] extras = { "grpc": [ - "grpcio >= 1.47.0, < 2.0.0; python_version < '3.14'", + "grpcio >= 1.59.0, < 2.0.0", "grpcio >= 1.75.1, < 2.0.0; python_version >= '3.14'", - "grpcio-status >= 1.47.0, < 2.0.0", + "grpcio-status >= 1.59.0, < 2.0.0", + "grpcio-status >= 1.75.1, < 2.0.0; python_version >= '3.14'", ], } diff --git a/packages/google-cloud-core/testing/constraints-3.10.txt b/packages/google-cloud-core/testing/constraints-3.10.txt index b6e9a0b1f23b..3ba92688aca9 100644 --- a/packages/google-cloud-core/testing/constraints-3.10.txt +++ b/packages/google-cloud-core/testing/constraints-3.10.txt @@ -7,7 +7,7 @@ # Then this file should have foo==1.14.0 google-api-core==2.11.0 google-auth==2.14.1 -grpcio==1.47.0 -grpcio-status==1.47.0 +grpcio==1.59.0 +grpcio-status==1.59.0 # cryptography is a direct dependency of google-auth cryptography==38.0.3 diff --git a/packages/google-cloud-logging/constraints.txt b/packages/google-cloud-logging/constraints.txt index ea6d85e3e029..4eeb7ced651b 100644 --- a/packages/google-cloud-logging/constraints.txt +++ b/packages/google-cloud-logging/constraints.txt @@ -5,7 +5,6 @@ google-cloud-audit-log==0.3.1 google-cloud-core==2.0.0 grpc-google-iam-v1==0.12.4 grpcio==1.59.0 -grpcio==1.75.1 opentelemetry-api==1.16.0 proto-plus==1.22.3 proto-plus==1.25.0 diff --git a/packages/google-cloud-pubsub/setup.py b/packages/google-cloud-pubsub/setup.py index 96a086c5c694..8d8ff709466d 100644 --- a/packages/google-cloud-pubsub/setup.py +++ b/packages/google-cloud-pubsub/setup.py @@ -43,13 +43,14 @@ # 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", - "grpcio >= 1.51.3, < 2.0.0; python_version < '3.14'", + "grpcio >= 1.59.0, < 2.0.0", "grpcio >= 1.75.1, < 2.0.0; python_version >= '3.14'", "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.0, <1.0.0", - "grpcio-status >= 1.51.3", + "grpcio-status >= 1.59.0", + "grpcio-status >= 1.75.1, < 2.0.0; python_version >= '3.14'", "opentelemetry-api >= 1.27.0", "opentelemetry-sdk >= 1.27.0", ] diff --git a/packages/google-cloud-pubsub/testing/constraints-3.10.txt b/packages/google-cloud-pubsub/testing/constraints-3.10.txt index aa2a4f1e90a4..e26e1577d2ed 100644 --- a/packages/google-cloud-pubsub/testing/constraints-3.10.txt +++ b/packages/google-cloud-pubsub/testing/constraints-3.10.txt @@ -6,10 +6,10 @@ # then this file should have google-cloud-foo==1.14.0 google-api-core==2.17.1 google-auth==2.14.1 -grpcio==1.51.3 +grpcio==1.59.0 proto-plus==1.22.3 protobuf==4.25.8 grpc-google-iam-v1==0.14.0 -grpcio-status==1.51.3 +grpcio-status==1.59.0 opentelemetry-api==1.27.0 opentelemetry-sdk==1.27.0 \ No newline at end of file diff --git a/packages/google-cloud-spanner-dbapi-driver/noxfile.py b/packages/google-cloud-spanner-dbapi-driver/noxfile.py index 2fedee7ee5af..6611bd67c0df 100644 --- a/packages/google-cloud-spanner-dbapi-driver/noxfile.py +++ b/packages/google-cloud-spanner-dbapi-driver/noxfile.py @@ -32,11 +32,7 @@ LINT_PATHS.append("samples") -# TODO: Remove 3.7, 3.8, 3.9 once we drop support for them. ALL_PYTHON = [ - "3.7", - "3.8", - "3.9", "3.10", "3.11", "3.12", @@ -103,8 +99,6 @@ @nox.session(python=ALL_PYTHON) def mypy(session): """Run the type checker.""" - if session.python in ("3.7", "3.8", "3.9"): - session.skip("Python versions < 3.10 are no longer supported") session.install( # TODO(https://github.com/googleapis/gapic-generator-python/issues/2410): Use the latest version of mypy @@ -244,8 +238,6 @@ def install_unittest_dependencies(session, *constraints): @nox.session(python=ALL_PYTHON) def unit(session): """Run the unit test suite.""" - if session.python in ("3.7", "3.8", "3.9"): - session.skip("Python versions < 3.10 are no longer supported") constraints_path = str( CURRENT_DIRECTORY / "testing" / f"constraints-{session.python}.txt" @@ -296,10 +288,6 @@ def install_systemtest_dependencies(session, *constraints): @nox.session(python=ALL_PYTHON) def system(session): - """Run the system test suite.""" - if session.python in ("3.7", "3.8", "3.9"): - session.skip("Python versions < 3.10 are no longer supported") - constraints_path = str( CURRENT_DIRECTORY / "testing" / f"constraints-{session.python}.txt" ) diff --git a/packages/google-cloud-spanner/samples/samples/noxfile.py b/packages/google-cloud-spanner/samples/samples/noxfile.py index 4e5349e54102..90a7e5af0fba 100644 --- a/packages/google-cloud-spanner/samples/samples/noxfile.py +++ b/packages/google-cloud-spanner/samples/samples/noxfile.py @@ -88,7 +88,7 @@ def get_pytest_env_vars() -> Dict[str, str]: # DO NOT EDIT - automatically generated. # All versions used to test samples. -ALL_VERSIONS = ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] +ALL_VERSIONS = ["3.10", "3.11", "3.12", "3.13", "3.14"] # Any default versions that should be ignored. IGNORED_VERSIONS = TEST_CONFIG["ignored_versions"] diff --git a/packages/google-cloud-spanner/setup.py b/packages/google-cloud-spanner/setup.py index 34eace7a4506..8e486f5b9f37 100644 --- a/packages/google-cloud-spanner/setup.py +++ b/packages/google-cloud-spanner/setup.py @@ -44,7 +44,7 @@ # 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.59.0, < 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", diff --git a/packages/google-cloud-spanner/testing/constraints-3.10.txt b/packages/google-cloud-spanner/testing/constraints-3.10.txt index 77670a5b9fc6..2c82fbf7840e 100644 --- a/packages/google-cloud-spanner/testing/constraints-3.10.txt +++ b/packages/google-cloud-spanner/testing/constraints-3.10.txt @@ -6,12 +6,12 @@ # then this file should have google-cloud-foo==1.14.0 google-api-core==2.17.1 google-auth==2.14.1 -grpcio==1.49.1 -grpcio-status==1.49.1 +grpcio==1.59.0 proto-plus==1.22.3 protobuf==4.25.8 google-cloud-core==2.0.0 grpc-google-iam-v1==0.12.4 +grpcio-status==1.59.0 sqlparse==0.4.4 grpc-interceptor==0.15.4 opentelemetry-api==1.22.0 diff --git a/packages/google-cloud-storage/setup.py b/packages/google-cloud-storage/setup.py index 0f339a119486..435118c13c30 100644 --- a/packages/google-cloud-storage/setup.py +++ b/packages/google-cloud-storage/setup.py @@ -58,9 +58,9 @@ # experimental in this SDK. More info in b/465352227 "grpc": [ "google-api-core[grpc] >= 2.27.0, < 3.0.0", - "grpcio >= 1.59.0, < 2.0.0; python_version < '3.14'", + "grpcio >= 1.59.0, < 2.0.0", "grpcio >= 1.75.1, < 2.0.0; python_version >= '3.14'", - "grpcio-status >= 1.59.0, < 2.0.0; python_version < '3.14'", + "grpcio-status >= 1.59.0, < 2.0.0", "grpcio-status >= 1.75.1, < 2.0.0; python_version >= '3.14'", "proto-plus >= 1.22.3, <2.0.0; python_version < '3.13'", "proto-plus >= 1.25.0, <2.0.0; python_version >= '3.13'", diff --git a/packages/googleapis-common-protos/noxfile.py b/packages/googleapis-common-protos/noxfile.py index ce20cdcfcad8..c4c87ce1c974 100644 --- a/packages/googleapis-common-protos/noxfile.py +++ b/packages/googleapis-common-protos/noxfile.py @@ -32,7 +32,6 @@ LINT_PATHS = ["docs", "google", "tests", "noxfile.py", "setup.py"] UNIT_TEST_PYTHON_VERSIONS: List[str] = [ - "3.9", "3.10", "3.11", "3.12", @@ -56,7 +55,6 @@ UNIT_TEST_EXTRAS_BY_PYTHON: Dict[str, List[str]] = {} SYSTEM_TEST_PYTHON_VERSIONS: List[str] = [ - "3.9", "3.10", "3.11", "3.12", diff --git a/packages/googleapis-common-protos/pyproject.toml b/packages/googleapis-common-protos/pyproject.toml index 14201e0a91ec..c95e4f9062c9 100644 --- a/packages/googleapis-common-protos/pyproject.toml +++ b/packages/googleapis-common-protos/pyproject.toml @@ -21,7 +21,7 @@ name = "googleapis-common-protos" version = "1.75.0" authors = [{ name = "Google LLC", email = "googleapis-packages@google.com" }] license = { text = "Apache 2.0" } -requires-python = ">= 3.9" +requires-python = ">= 3.10" readme = "README.rst" description = "Common protobufs used in Google APIs" classifiers = [ @@ -30,7 +30,6 @@ classifiers = [ "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", @@ -47,7 +46,7 @@ dependencies = [ Repository = "https://github.com/googleapis/google-cloud-python/tree/main/packages/googleapis-common-protos" [project.optional-dependencies] -grpc = ["grpcio >= 1.44.0, < 2.0.0"] +grpc = ["grpcio >= 1.59.0, < 2.0.0"] [tool.setuptools.packages.find] include = ["google*"] diff --git a/packages/googleapis-common-protos/testing/constraints-3.9-python-pubsub.txt b/packages/googleapis-common-protos/testing/constraints-3.10-python-pubsub.txt similarity index 95% rename from packages/googleapis-common-protos/testing/constraints-3.9-python-pubsub.txt rename to packages/googleapis-common-protos/testing/constraints-3.10-python-pubsub.txt index 15018df0b603..0d45849ee764 100644 --- a/packages/googleapis-common-protos/testing/constraints-3.9-python-pubsub.txt +++ b/packages/googleapis-common-protos/testing/constraints-3.10-python-pubsub.txt @@ -6,4 +6,4 @@ # e.g., if setup.py has "foo >= 1.14.0, < 2.0.0dev", # Then this file should have foo==1.14.0 protobuf==4.25.8 -grpcio==1.51.3 \ No newline at end of file +grpcio==1.59.0 \ No newline at end of file diff --git a/packages/googleapis-common-protos/testing/constraints-3.10.txt b/packages/googleapis-common-protos/testing/constraints-3.10.txt index e69de29bb2d1..e72cafcdd6f9 100644 --- a/packages/googleapis-common-protos/testing/constraints-3.10.txt +++ b/packages/googleapis-common-protos/testing/constraints-3.10.txt @@ -0,0 +1,9 @@ +# This constraints file is used to check that lower bounds +# are correct in setup.py +# List *all* library dependencies and extras in this file. +# Pin the version to the lower bound. +# +# e.g., if setup.py has "foo >= 1.14.0, < 2.0.0dev", +# Then this file should have foo==1.14.0 +protobuf==4.25.8 +grpcio==1.59.0 diff --git a/packages/googleapis-common-protos/testing/constraints-3.9.txt b/packages/googleapis-common-protos/testing/constraints-3.9.txt deleted file mode 100644 index 78e031894a05..000000000000 --- a/packages/googleapis-common-protos/testing/constraints-3.9.txt +++ /dev/null @@ -1,9 +0,0 @@ -# This constraints file is used to check that lower bounds -# are correct in setup.py -# List *all* library dependencies and extras in this file. -# Pin the version to the lower bound. -# -# e.g., if setup.py has "foo >= 1.14.0, < 2.0.0dev", -# Then this file should have foo==1.14.0 -protobuf==4.25.8 -grpcio==1.44.0 \ No newline at end of file diff --git a/packages/grpc-google-iam-v1/noxfile.py b/packages/grpc-google-iam-v1/noxfile.py index 6d0703ed100b..b22bedf724db 100644 --- a/packages/grpc-google-iam-v1/noxfile.py +++ b/packages/grpc-google-iam-v1/noxfile.py @@ -32,7 +32,6 @@ LINT_PATHS = ["docs", "google", "tests", "noxfile.py", "setup.py"] UNIT_TEST_PYTHON_VERSIONS: List[str] = [ - "3.9", "3.10", "3.11", "3.12", @@ -56,7 +55,6 @@ UNIT_TEST_EXTRAS_BY_PYTHON: Dict[str, List[str]] = {} SYSTEM_TEST_PYTHON_VERSIONS: List[str] = [ - "3.9", "3.10", "3.11", "3.12", diff --git a/packages/grpc-google-iam-v1/pyproject.toml b/packages/grpc-google-iam-v1/pyproject.toml index d9168e103f28..e8975612f8f0 100644 --- a/packages/grpc-google-iam-v1/pyproject.toml +++ b/packages/grpc-google-iam-v1/pyproject.toml @@ -21,7 +21,7 @@ name = "grpc-google-iam-v1" version = "0.14.4" authors = [{ name = "Google LLC", email = "googleapis-packages@google.com" }] license = { text = "Apache 2.0" } -requires-python = ">=3.9" +requires-python = ">=3.10" description = "IAM API client library" readme = "README.rst" classifiers = [ @@ -30,7 +30,6 @@ classifiers = [ "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", @@ -40,7 +39,7 @@ classifiers = [ "Topic :: Internet", ] dependencies = [ - "grpcio >= 1.44.0, < 2.0.0", + "grpcio >= 1.59.0, < 2.0.0", "googleapis-common-protos[grpc] >= 1.63.2, < 2.0.0", "protobuf >= 4.25.8, < 8.0.0", ] diff --git a/packages/grpc-google-iam-v1/testing/constraints-3.9.txt b/packages/grpc-google-iam-v1/testing/constraints-3.10-python-pubsub.txt similarity index 95% rename from packages/grpc-google-iam-v1/testing/constraints-3.9.txt rename to packages/grpc-google-iam-v1/testing/constraints-3.10-python-pubsub.txt index 8cd2eb21f15b..e72cafcdd6f9 100644 --- a/packages/grpc-google-iam-v1/testing/constraints-3.9.txt +++ b/packages/grpc-google-iam-v1/testing/constraints-3.10-python-pubsub.txt @@ -6,4 +6,4 @@ # e.g., if setup.py has "foo >= 1.14.0, < 2.0.0dev", # Then this file should have foo==1.14.0 protobuf==4.25.8 -grpcio==1.44.0 +grpcio==1.59.0 diff --git a/packages/grpc-google-iam-v1/testing/constraints-3.10.txt b/packages/grpc-google-iam-v1/testing/constraints-3.10.txt index e69de29bb2d1..e72cafcdd6f9 100644 --- a/packages/grpc-google-iam-v1/testing/constraints-3.10.txt +++ b/packages/grpc-google-iam-v1/testing/constraints-3.10.txt @@ -0,0 +1,9 @@ +# This constraints file is used to check that lower bounds +# are correct in setup.py +# List *all* library dependencies and extras in this file. +# Pin the version to the lower bound. +# +# e.g., if setup.py has "foo >= 1.14.0, < 2.0.0dev", +# Then this file should have foo==1.14.0 +protobuf==4.25.8 +grpcio==1.59.0 diff --git a/packages/grpc-google-iam-v1/testing/constraints-3.9-python-pubsub.txt b/packages/grpc-google-iam-v1/testing/constraints-3.9-python-pubsub.txt deleted file mode 100644 index b6293bae2f4a..000000000000 --- a/packages/grpc-google-iam-v1/testing/constraints-3.9-python-pubsub.txt +++ /dev/null @@ -1,9 +0,0 @@ -# This constraints file is used to check that lower bounds -# are correct in setup.py -# List *all* library dependencies and extras in this file. -# Pin the version to the lower bound. -# -# e.g., if setup.py has "foo >= 1.14.0, < 2.0.0dev", -# Then this file should have foo==1.14.0 -protobuf==4.25.8 -grpcio==1.51.3 diff --git a/packages/proto-plus/testing/constraints-3.10.txt b/packages/proto-plus/testing/constraints-3.10.txt index e69de29bb2d1..2aa3356da157 100644 --- a/packages/proto-plus/testing/constraints-3.10.txt +++ b/packages/proto-plus/testing/constraints-3.10.txt @@ -0,0 +1,9 @@ +# This constraints file is used to check that lower bounds +# are correct in setup.py +# List *all* library dependencies and extras in this file. +# Pin the version to the lower bound. +# +# e.g., if setup.py has "foo >= 1.14.0, < 2.0.0dev", +# Then this file should have foo==1.14.0 +google-api-core==2.11.0 +protobuf==4.25.8 diff --git a/packages/proto-plus/testing/constraints-3.9.txt b/packages/proto-plus/testing/constraints-3.9.txt deleted file mode 100644 index 2aa3356da157..000000000000 --- a/packages/proto-plus/testing/constraints-3.9.txt +++ /dev/null @@ -1,9 +0,0 @@ -# This constraints file is used to check that lower bounds -# are correct in setup.py -# List *all* library dependencies and extras in this file. -# Pin the version to the lower bound. -# -# e.g., if setup.py has "foo >= 1.14.0, < 2.0.0dev", -# Then this file should have foo==1.14.0 -google-api-core==2.11.0 -protobuf==4.25.8 diff --git a/packages/sqlalchemy-bigquery/setup.py b/packages/sqlalchemy-bigquery/setup.py index 8d7ad005c2ee..d7aac705a497 100644 --- a/packages/sqlalchemy-bigquery/setup.py +++ b/packages/sqlalchemy-bigquery/setup.py @@ -61,8 +61,7 @@ def readme(): # See: https://github.com/googleapis/python-bigquery/issues/83 The # grpc.Channel.close() method isn't added until 1.32.0. # https://github.com/grpc/grpc/pull/15254 - "grpcio >= 1.47.0, < 2.0.0", - "grpcio >= 1.49.1, < 2.0.0; python_version =='3.11'", + "grpcio >= 1.59.0, < 2.0.0", "grpcio >= 1.75.1, < 2.0.0; python_version >= '3.14'", "pyarrow >= 6.0.0", ], diff --git a/packages/sqlalchemy-bigquery/testing/constraints-3.10.txt b/packages/sqlalchemy-bigquery/testing/constraints-3.10.txt index 31dd91a92cb5..418975be5f1a 100644 --- a/packages/sqlalchemy-bigquery/testing/constraints-3.10.txt +++ b/packages/sqlalchemy-bigquery/testing/constraints-3.10.txt @@ -9,7 +9,7 @@ google-auth==2.14.1 google-cloud-bigquery==3.20.0 google-cloud-bigquery-storage==2.18.0 google-api-core==2.11.1 -grpcio==1.47.0 +grpcio==1.59.0 numpy==1.26.4 alembic==1.7.7 pyarrow==6.0.0 From 02755f3f06c9d889087a0667468af85dfb221df2 Mon Sep 17 00:00:00 2001 From: Anthonios Partheniou Date: Wed, 3 Jun 2026 14:27:18 +0000 Subject: [PATCH 2/4] See https://github.com/googleapis/google-cloud-python/issues/17287 --- packages/sqlalchemy-bigquery/tests/unit/test_geography.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/sqlalchemy-bigquery/tests/unit/test_geography.py b/packages/sqlalchemy-bigquery/tests/unit/test_geography.py index 647e1bc36b6c..f13fecf5457a 100644 --- a/packages/sqlalchemy-bigquery/tests/unit/test_geography.py +++ b/packages/sqlalchemy-bigquery/tests/unit/test_geography.py @@ -26,6 +26,9 @@ def test_geoalchemy2_core(faux_conn, last_query): """Make sure GeoAlchemy 2 Core Tutorial works as adapted to only having geometry""" + pytest.skip( + "Test is skipped due to https://github.com/googleapis/google-cloud-python/issues/17287" + ) conn = faux_conn # Create the Table From 96dcf155d2591508f4572e6bdeb3f3506aa7120a Mon Sep 17 00:00:00 2001 From: Anthonios Partheniou Date: Wed, 3 Jun 2026 14:30:21 +0000 Subject: [PATCH 3/4] See https://github.com/googleapis/google-cloud-python/issues/17287 --- .../tests/system/test_geography.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/sqlalchemy-bigquery/tests/system/test_geography.py b/packages/sqlalchemy-bigquery/tests/system/test_geography.py index 3519c31c6a75..dc2f2171d014 100644 --- a/packages/sqlalchemy-bigquery/tests/system/test_geography.py +++ b/packages/sqlalchemy-bigquery/tests/system/test_geography.py @@ -31,7 +31,9 @@ def test_geoalchemy2_core(bigquery_dataset): - Bigquery doesn't have ST_BUFFER """ - + pytest.skip( + "Test is skipped due to https://github.com/googleapis/google-cloud-python/issues/17287" + ) # Connect to the DB from sqlalchemy import create_engine @@ -144,7 +146,9 @@ def test_geoalchemy2_orm(bigquery_dataset): https://geoalchemy-2.readthedocs.io/en/latest/orm_tutorial.html """ - + pytest.skip( + "Test is skipped due to https://github.com/googleapis/google-cloud-python/issues/17287" + ) # Connect to the DB from sqlalchemy import create_engine @@ -255,6 +259,9 @@ class Lake(Base): def test_geoalchemy2_orm_w_relationship(bigquery_dataset): + pytest.skip( + "Test is skipped due to https://github.com/googleapis/google-cloud-python/issues/17287" + ) from sqlalchemy import create_engine engine = create_engine(f"bigquery:///{bigquery_dataset}") From 8e038385daf5487f651d2557f5553d5c01629b15 Mon Sep 17 00:00:00 2001 From: Anthonios Partheniou Date: Wed, 3 Jun 2026 15:51:16 +0000 Subject: [PATCH 4/4] address feedback --- .../client-post-processing/bigtable-integration.yaml | 2 +- .../client-post-processing/pubsub-integration.yaml | 2 +- packages/gapic-generator/gapic/ads-templates/setup.py.j2 | 2 +- .../gcp-sphinx-docfx-yaml/tests/testdata/gapic-combo/setup.py | 2 +- packages/google-cloud-bigtable/setup.py | 2 +- packages/google-cloud-pubsub/setup.py | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.librarian/generator-input/client-post-processing/bigtable-integration.yaml b/.librarian/generator-input/client-post-processing/bigtable-integration.yaml index b2edca54a00c..636898586468 100644 --- a/.librarian/generator-input/client-post-processing/bigtable-integration.yaml +++ b/.librarian/generator-input/client-post-processing/bigtable-integration.yaml @@ -200,7 +200,7 @@ replacements: "protobuf >= 4.25.8, < 8.0.0", "google-cloud-core >= 2.0.0, <3.0.0", "grpc-google-iam-v1 >= 0.14.0, <1.0.0", - "google-crc32c>=1.6.0, <2.0.0dev", + "google-crc32c>=1.6.0, < 2.0.0", ] count: 1 - paths: [ diff --git a/.librarian/generator-input/client-post-processing/pubsub-integration.yaml b/.librarian/generator-input/client-post-processing/pubsub-integration.yaml index 2944393f88df..0efe99164e5c 100644 --- a/.librarian/generator-input/client-post-processing/pubsub-integration.yaml +++ b/.librarian/generator-input/client-post-processing/pubsub-integration.yaml @@ -374,7 +374,7 @@ replacements: - "packages/google-cloud-pubsub/setup.py" before: '([ \t]+)("grpc-google-iam-v1.*",\n)\]\nextras = \{\}' after: |- - \g<1>\g<2>\g<1>"grpcio-status >= 1.59.0", + \g<1>\g<2>\g<1>"grpcio-status >= 1.59.0, < 2.0.0", \g<1>"grpcio-status >= 1.75.1, < 2.0.0; python_version >= '3.14'", \g<1>"opentelemetry-api >= 1.27.0", \g<1>"opentelemetry-sdk >= 1.27.0", diff --git a/packages/gapic-generator/gapic/ads-templates/setup.py.j2 b/packages/gapic-generator/gapic/ads-templates/setup.py.j2 index 5c4a13448ff5..9d7c5ca5d228 100644 --- a/packages/gapic-generator/gapic/ads-templates/setup.py.j2 +++ b/packages/gapic-generator/gapic/ads-templates/setup.py.j2 @@ -32,7 +32,7 @@ dependencies = [ "google-api-core[grpc] >= 2.24.2, < 3.0.0", "google-auth >= 2.14.1, <3.0.0", "googleapis-common-protos >= 1.53.0", - "grpcio >= 1.59.0", + "grpcio >= 1.59.0, < 2.0.0", "proto-plus >= 1.26.1, <2.0.0", "protobuf >= 6.33.5, < 8.0.0", {% if api.requires_package(('google', 'iam', 'v1')) %} diff --git a/packages/gcp-sphinx-docfx-yaml/tests/testdata/gapic-combo/setup.py b/packages/gcp-sphinx-docfx-yaml/tests/testdata/gapic-combo/setup.py index 5f60b6329ec1..2ee5bcef45bb 100644 --- a/packages/gcp-sphinx-docfx-yaml/tests/testdata/gapic-combo/setup.py +++ b/packages/gcp-sphinx-docfx-yaml/tests/testdata/gapic-combo/setup.py @@ -33,7 +33,7 @@ "proto-plus >= 1.22.0, <2.0.0dev", "protobuf>=3.19.5,<5.0.0dev,!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5", "grpc-google-iam-v1 >=0.12.4, <1.0.0dev", - "grpcio-status >= 1.59.0", + "grpcio-status >= 1.59.0, < 2.0.0", ] extras = {"libcst": "libcst >= 0.3.10"} diff --git a/packages/google-cloud-bigtable/setup.py b/packages/google-cloud-bigtable/setup.py index af210c742f7c..7f27ddf10709 100644 --- a/packages/google-cloud-bigtable/setup.py +++ b/packages/google-cloud-bigtable/setup.py @@ -50,7 +50,7 @@ "protobuf >= 4.25.8, < 8.0.0", "google-cloud-core >= 2.0.0, <3.0.0", "grpc-google-iam-v1 >= 0.14.0, <1.0.0", - "google-crc32c>=1.6.0, <2.0.0dev", + "google-crc32c>=1.6.0, < 2.0.0", ] extras = { "libcst": "libcst >= 0.2.5", diff --git a/packages/google-cloud-pubsub/setup.py b/packages/google-cloud-pubsub/setup.py index 8d8ff709466d..98ea793d9e5f 100644 --- a/packages/google-cloud-pubsub/setup.py +++ b/packages/google-cloud-pubsub/setup.py @@ -49,7 +49,7 @@ "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.0, <1.0.0", - "grpcio-status >= 1.59.0", + "grpcio-status >= 1.59.0, < 2.0.0", "grpcio-status >= 1.75.1, < 2.0.0; python_version >= '3.14'", "opentelemetry-api >= 1.27.0", "opentelemetry-sdk >= 1.27.0",