From bbedb8ce3966b632fbba8e1a5357ec0265917f9b Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Thu, 9 Oct 2025 15:50:10 -0700 Subject: [PATCH 01/41] updated classifier --- setup.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/setup.py b/setup.py index 3cb9d465d..cac533db6 100644 --- a/setup.py +++ b/setup.py @@ -85,6 +85,8 @@ "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", "Operating System :: OS Independent", "Topic :: Internet", ], From e09302667166396515e9ed2d5a9c4bfd9e23ba24 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Thu, 9 Oct 2025 15:52:29 -0700 Subject: [PATCH 02/41] updated test versions --- .github/workflows/unittest.yml | 2 +- noxfile.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml index 6a0429d96..d59bbb1b8 100644 --- a/.github/workflows/unittest.yml +++ b/.github/workflows/unittest.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-22.04 strategy: matrix: - python: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] + python: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] steps: - name: Checkout uses: actions/checkout@v4 diff --git a/noxfile.py b/noxfile.py index 548bfd0ec..ea86caea9 100644 --- a/noxfile.py +++ b/noxfile.py @@ -42,6 +42,7 @@ "3.11", "3.12", "3.13", + "3.14", ] UNIT_TEST_STANDARD_DEPENDENCIES = [ "mock", @@ -58,7 +59,7 @@ UNIT_TEST_EXTRAS: List[str] = [] UNIT_TEST_EXTRAS_BY_PYTHON: Dict[str, List[str]] = {} -SYSTEM_TEST_PYTHON_VERSIONS: List[str] = ["3.8", "3.12"] +SYSTEM_TEST_PYTHON_VERSIONS: List[str] = ["3.8", "3.14"] SYSTEM_TEST_STANDARD_DEPENDENCIES: List[str] = [ "mock", "pytest", From e79f193ca2c78c6c6450170c89a7d0eefb2b22b7 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Thu, 9 Oct 2025 16:33:27 -0700 Subject: [PATCH 03/41] updated cross sync --- .cross_sync/transformers.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.cross_sync/transformers.py b/.cross_sync/transformers.py index 42ba3f83c..9adadd0aa 100644 --- a/.cross_sync/transformers.py +++ b/.cross_sync/transformers.py @@ -71,18 +71,19 @@ def visit_FunctionDef(self, node): Replace function docstrings """ docstring = ast.get_docstring(node) - if docstring and isinstance(node.body[0], ast.Expr) and isinstance( - node.body[0].value, ast.Str - ): + if docstring and isinstance(node.body[0], ast.Expr) \ + and isinstance(node.body[0].value, ast.Constant) \ + and isinstance(node.body[0].value.value, str) \ + : for key_word, replacement in self.replacements.items(): docstring = docstring.replace(key_word, replacement) - node.body[0].value.s = docstring + node.body[0].value.value = docstring return self.generic_visit(node) def visit_Constant(self, node): """Replace string type annotations""" try: - node.s = self.replacements.get(node.s, node.s) + node.value = self.replacements.get(node.value, node.value) except TypeError: # ignore unhashable types (e.g. list) pass @@ -264,7 +265,7 @@ def get_output_path(self, node): for target in n.targets: if isinstance(target, ast.Name) and target.id == self.FILE_ANNOTATION: # return the output path - return n.value.s.replace(".", "/") + ".py" + return n.value.value.replace(".", "/") + ".py" def visit_Module(self, node): # look for __CROSS_SYNC_OUTPUT__ Assign statement From 3ae39ebb7842c38d875e47d83f3ed08ecb809f66 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Thu, 9 Oct 2025 16:36:52 -0700 Subject: [PATCH 04/41] updated failing test --- tests/unit/admin_overlay/test_async_consistency.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/unit/admin_overlay/test_async_consistency.py b/tests/unit/admin_overlay/test_async_consistency.py index 56978713c..b64ae1a11 100644 --- a/tests/unit/admin_overlay/test_async_consistency.py +++ b/tests/unit/admin_overlay/test_async_consistency.py @@ -43,7 +43,8 @@ def async_mock_check_consistency_callable(max_poll_count=1): return mock.AsyncMock(spec=["__call__"], side_effect=side_effect) -def test_check_consistency_future_cancel(): +@pytest.mark.asyncio +async def test_check_consistency_future_cancel(): check_consistency_call = async_mock_check_consistency_callable() future = async_consistency._AsyncCheckConsistencyPollingFuture( check_consistency_call From 7a1fe126d36013b0a7e5b04843221de4612401bb Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Fri, 10 Oct 2025 10:59:33 -0700 Subject: [PATCH 05/41] updated CONTRIBUTING.md --- CONTRIBUTING.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 985538f48..45bddb8ba 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -22,7 +22,7 @@ In order to add a feature: documentation. - The feature must work fully on the following CPython versions: - 3.7, 3.8, 3.9, 3.10, 3.11, 3.12 and 3.13 on both UNIX and Windows. + 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 and 3.14 on both UNIX and Windows. - The feature must not add unnecessary dependencies (where "unnecessary" is of course subjective, but new dependencies should @@ -228,6 +228,7 @@ We support: - `Python 3.11`_ - `Python 3.12`_ - `Python 3.13`_ +- `Python 3.14`_ .. _Python 3.7: https://docs.python.org/3.7/ .. _Python 3.8: https://docs.python.org/3.8/ @@ -236,6 +237,7 @@ We support: .. _Python 3.11: https://docs.python.org/3.11/ .. _Python 3.12: https://docs.python.org/3.12/ .. _Python 3.13: https://docs.python.org/3.13/ +.. _Python 3.14: https://docs.python.org/3.14/ Supported versions can be found in our ``noxfile.py`` `config`_. From 89153f17df7f81b5f4e6f1e96332d13952f44406 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Fri, 10 Oct 2025 11:00:46 -0700 Subject: [PATCH 06/41] fixed event loop creation for system tests --- tests/system/conftest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/system/conftest.py b/tests/system/conftest.py index 39480942d..8c0eb30b1 100644 --- a/tests/system/conftest.py +++ b/tests/system/conftest.py @@ -30,7 +30,7 @@ @pytest.fixture(scope="session") def event_loop(): - loop = asyncio.get_event_loop() + loop = asyncio.new_event_loop() yield loop loop.stop() loop.close() From 808cc8ec22b73a3c0de4ae968a2268a444a38a3d Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Fri, 10 Oct 2025 11:01:09 -0700 Subject: [PATCH 07/41] added new samples tests --- .kokoro/samples/python3.14/common.cfg | 40 ++++++++++++++++++++ .kokoro/samples/python3.14/continuous.cfg | 6 +++ .kokoro/samples/python3.14/periodic-head.cfg | 11 ++++++ .kokoro/samples/python3.14/periodic.cfg | 6 +++ .kokoro/samples/python3.14/presubmit.cfg | 6 +++ 5 files changed, 69 insertions(+) create mode 100644 .kokoro/samples/python3.14/common.cfg create mode 100644 .kokoro/samples/python3.14/continuous.cfg create mode 100644 .kokoro/samples/python3.14/periodic-head.cfg create mode 100644 .kokoro/samples/python3.14/periodic.cfg create mode 100644 .kokoro/samples/python3.14/presubmit.cfg diff --git a/.kokoro/samples/python3.14/common.cfg b/.kokoro/samples/python3.14/common.cfg new file mode 100644 index 000000000..a9ea06119 --- /dev/null +++ b/.kokoro/samples/python3.14/common.cfg @@ -0,0 +1,40 @@ +# Format: //devtools/kokoro/config/proto/build.proto + +# Build logs will be here +action { + define_artifacts { + regex: "**/*sponge_log.xml" + } +} + +# Specify which tests to run +env_vars: { + key: "RUN_TESTS_SESSION" + value: "py-3.14" +} + +# Declare build specific Cloud project. +env_vars: { + key: "BUILD_SPECIFIC_GCLOUD_PROJECT" + value: "python-docs-samples-tests-314" +} + +env_vars: { + key: "TRAMPOLINE_BUILD_FILE" + value: "github/python-bigtable/.kokoro/test-samples.sh" +} + +# Configure the docker image for kokoro-trampoline. +env_vars: { + key: "TRAMPOLINE_IMAGE" + value: "gcr.io/cloud-devrel-kokoro-resources/python-samples-testing-docker" +} + +# Download secrets for samples +gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/python-docs-samples" + +# Download trampoline resources. +gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline" + +# Use the trampoline script to run in docker. +build_file: "python-bigtable/.kokoro/trampoline_v2.sh" diff --git a/.kokoro/samples/python3.14/continuous.cfg b/.kokoro/samples/python3.14/continuous.cfg new file mode 100644 index 000000000..a1c8d9759 --- /dev/null +++ b/.kokoro/samples/python3.14/continuous.cfg @@ -0,0 +1,6 @@ +# Format: //devtools/kokoro/config/proto/build.proto + +env_vars: { + key: "INSTALL_LIBRARY_FROM_SOURCE" + value: "True" +} \ No newline at end of file diff --git a/.kokoro/samples/python3.14/periodic-head.cfg b/.kokoro/samples/python3.14/periodic-head.cfg new file mode 100644 index 000000000..be25a34f9 --- /dev/null +++ b/.kokoro/samples/python3.14/periodic-head.cfg @@ -0,0 +1,11 @@ +# Format: //devtools/kokoro/config/proto/build.proto + +env_vars: { + key: "INSTALL_LIBRARY_FROM_SOURCE" + value: "True" +} + +env_vars: { + key: "TRAMPOLINE_BUILD_FILE" + value: "github/python-bigtable/.kokoro/test-samples-against-head.sh" +} diff --git a/.kokoro/samples/python3.14/periodic.cfg b/.kokoro/samples/python3.14/periodic.cfg new file mode 100644 index 000000000..71cd1e597 --- /dev/null +++ b/.kokoro/samples/python3.14/periodic.cfg @@ -0,0 +1,6 @@ +# Format: //devtools/kokoro/config/proto/build.proto + +env_vars: { + key: "INSTALL_LIBRARY_FROM_SOURCE" + value: "False" +} diff --git a/.kokoro/samples/python3.14/presubmit.cfg b/.kokoro/samples/python3.14/presubmit.cfg new file mode 100644 index 000000000..a1c8d9759 --- /dev/null +++ b/.kokoro/samples/python3.14/presubmit.cfg @@ -0,0 +1,6 @@ +# Format: //devtools/kokoro/config/proto/build.proto + +env_vars: { + key: "INSTALL_LIBRARY_FROM_SOURCE" + value: "True" +} \ No newline at end of file From 8353ca4b9b073f96f59edfc74cd0eec35cf3a80a Mon Sep 17 00:00:00 2001 From: Owl Bot Date: Fri, 10 Oct 2025 18:06:21 +0000 Subject: [PATCH 08/41] =?UTF-8?q?=F0=9F=A6=89=20Updates=20from=20OwlBot=20?= =?UTF-8?q?post-processor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --- .github/workflows/unittest.yml | 2 +- CONTRIBUTING.rst | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml index d59bbb1b8..6a0429d96 100644 --- a/.github/workflows/unittest.yml +++ b/.github/workflows/unittest.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-22.04 strategy: matrix: - python: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] + python: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] steps: - name: Checkout uses: actions/checkout@v4 diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 45bddb8ba..985538f48 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -22,7 +22,7 @@ In order to add a feature: documentation. - The feature must work fully on the following CPython versions: - 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 and 3.14 on both UNIX and Windows. + 3.7, 3.8, 3.9, 3.10, 3.11, 3.12 and 3.13 on both UNIX and Windows. - The feature must not add unnecessary dependencies (where "unnecessary" is of course subjective, but new dependencies should @@ -228,7 +228,6 @@ We support: - `Python 3.11`_ - `Python 3.12`_ - `Python 3.13`_ -- `Python 3.14`_ .. _Python 3.7: https://docs.python.org/3.7/ .. _Python 3.8: https://docs.python.org/3.8/ @@ -237,7 +236,6 @@ We support: .. _Python 3.11: https://docs.python.org/3.11/ .. _Python 3.12: https://docs.python.org/3.12/ .. _Python 3.13: https://docs.python.org/3.13/ -.. _Python 3.14: https://docs.python.org/3.14/ Supported versions can be found in our ``noxfile.py`` `config`_. From b9771afdfc62195677c8c1000c1a4a06f14bad46 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Fri, 10 Oct 2025 11:21:13 -0700 Subject: [PATCH 09/41] updated required checks --- .github/sync-repo-settings.yaml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml index df49eafcc..bcb6d8ef1 100644 --- a/.github/sync-repo-settings.yaml +++ b/.github/sync-repo-settings.yaml @@ -32,6 +32,18 @@ branchProtectionRules: - 'Kokoro system-3.8' - 'cla/google' - 'OwlBot Post Processor' + - 'lint' + - 'mypy' + - 'docs' + - 'docfx' + - 'unit-3.7' + - 'unit-3.8' + - 'unit-3.9' + - 'unit-3.10' + - 'unit-3.11' + - 'unit-3.12' + - 'unit-3.13' + - 'unit-3.14' # List of explicit permissions to add (additive only) permissionRules: # Team slug to add to repository permissions From 2099d1c255bcda6c79f5cd31638e35777fea5c8f Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Fri, 10 Oct 2025 11:24:38 -0700 Subject: [PATCH 10/41] updated prerelease_deps --- noxfile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/noxfile.py b/noxfile.py index ea86caea9..208c0364f 100644 --- a/noxfile.py +++ b/noxfile.py @@ -457,7 +457,7 @@ def docfx(session): session.run("python", "docs/scripts/patch_devsite_toc.py") -@nox.session(python="3.12") +@nox.session(python="3.14") @nox.parametrize( "protobuf_implementation", ["python", "upb", "cpp"], From 08a07d0763a29ae64e79540169a0f3be5e736892 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Fri, 10 Oct 2025 11:29:02 -0700 Subject: [PATCH 11/41] updated owlbot config --- owlbot.py | 1 + 1 file changed, 1 insertion(+) diff --git a/owlbot.py b/owlbot.py index 9562b6142..c2d571c48 100644 --- a/owlbot.py +++ b/owlbot.py @@ -109,6 +109,7 @@ def get_staging_dirs( system_test_external_dependencies=[ "pytest-asyncio==0.21.2", ], + unit_test_python_versions=["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"], ) s.move(templated_files, excludes=[".coveragerc", "README.rst", ".github/release-please.yml", "noxfile.py", "renovate.json"]) From cd30d1fcccf38b8e3e8a1f0e7e83a39322fbf653 Mon Sep 17 00:00:00 2001 From: Owl Bot Date: Fri, 10 Oct 2025 18:31:43 +0000 Subject: [PATCH 12/41] =?UTF-8?q?=F0=9F=A6=89=20Updates=20from=20OwlBot=20?= =?UTF-8?q?post-processor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --- .github/workflows/unittest.yml | 2 +- CONTRIBUTING.rst | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml index 6a0429d96..d59bbb1b8 100644 --- a/.github/workflows/unittest.yml +++ b/.github/workflows/unittest.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-22.04 strategy: matrix: - python: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] + python: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] steps: - name: Checkout uses: actions/checkout@v4 diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 985538f48..4eb02dbac 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -22,7 +22,7 @@ In order to add a feature: documentation. - The feature must work fully on the following CPython versions: - 3.7, 3.8, 3.9, 3.10, 3.11, 3.12 and 3.13 on both UNIX and Windows. + 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 and 3.14 on both UNIX and Windows. - The feature must not add unnecessary dependencies (where "unnecessary" is of course subjective, but new dependencies should @@ -72,7 +72,7 @@ We use `nox `__ to instrument our tests. - To run a single unit test:: - $ nox -s unit-3.13 -- -k + $ nox -s unit-3.14 -- -k .. note:: @@ -228,6 +228,7 @@ We support: - `Python 3.11`_ - `Python 3.12`_ - `Python 3.13`_ +- `Python 3.14`_ .. _Python 3.7: https://docs.python.org/3.7/ .. _Python 3.8: https://docs.python.org/3.8/ @@ -236,6 +237,7 @@ We support: .. _Python 3.11: https://docs.python.org/3.11/ .. _Python 3.12: https://docs.python.org/3.12/ .. _Python 3.13: https://docs.python.org/3.13/ +.. _Python 3.14: https://docs.python.org/3.14/ Supported versions can be found in our ``noxfile.py`` `config`_. From 53c7d30f6b945ed1c971358436197095ea748431 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Fri, 10 Oct 2025 11:35:30 -0700 Subject: [PATCH 13/41] added constriants file --- testing/constraints-3.14.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 testing/constraints-3.14.txt diff --git a/testing/constraints-3.14.txt b/testing/constraints-3.14.txt new file mode 100644 index 000000000..e69de29bb From d1d1595ca3b1731dab39c42e559ca84e0715ecf1 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Fri, 10 Oct 2025 11:45:15 -0700 Subject: [PATCH 14/41] updated grpc version requirement --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index cac533db6..855b37828 100644 --- a/setup.py +++ b/setup.py @@ -38,6 +38,7 @@ release_status = "Development Status :: 5 - Production/Stable" dependencies = [ "google-api-core[grpc] >= 2.17.0, <3.0.0", + "grpcio >= 1.75.1, < 2.0.0; python_version >= '3.14'", "google-cloud-core >= 1.4.4, <3.0.0", "google-auth >= 2.23.0, <3.0.0,!=2.24.0,!=2.25.0", "grpc-google-iam-v1 >= 0.12.4, <1.0.0", From e6815ca1ddbc060a1c0560995fe3a3196ab9004d Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Fri, 10 Oct 2025 12:18:56 -0700 Subject: [PATCH 15/41] skip cpp tests in 3.14 --- noxfile.py | 4 ++-- setup.py | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/noxfile.py b/noxfile.py index 208c0364f..e98a0d065 100644 --- a/noxfile.py +++ b/noxfile.py @@ -207,8 +207,8 @@ def install_unittest_dependencies(session, *constraints): ) def unit(session, protobuf_implementation): # Install all test dependencies, then install this package in-place. - - if protobuf_implementation == "cpp" and session.python in ("3.11", "3.12", "3.13"): + py_version = tuple([int(v) for v in session.python.split(".")]) + if protobuf_implementation == "cpp" and py_version >= (3, 11): session.skip("cpp implementation is not supported in python 3.11+") constraints_path = str( diff --git a/setup.py b/setup.py index 855b37828..cac533db6 100644 --- a/setup.py +++ b/setup.py @@ -38,7 +38,6 @@ release_status = "Development Status :: 5 - Production/Stable" dependencies = [ "google-api-core[grpc] >= 2.17.0, <3.0.0", - "grpcio >= 1.75.1, < 2.0.0; python_version >= '3.14'", "google-cloud-core >= 1.4.4, <3.0.0", "google-auth >= 2.23.0, <3.0.0,!=2.24.0,!=2.25.0", "grpc-google-iam-v1 >= 0.12.4, <1.0.0", From 0586d571bedfc97f4484d66f0c1c678ae79b94a9 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Fri, 10 Oct 2025 14:08:22 -0700 Subject: [PATCH 16/41] fixed prerelease_deps --- noxfile.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/noxfile.py b/noxfile.py index e98a0d065..9f793af32 100644 --- a/noxfile.py +++ b/noxfile.py @@ -465,7 +465,8 @@ def docfx(session): def prerelease_deps(session, protobuf_implementation): """Run all tests with prerelease versions of dependencies installed.""" - if protobuf_implementation == "cpp" and session.python in ("3.11", "3.12", "3.13"): + py_version = tuple([int(v) for v in session.python.split(".")]) + if protobuf_implementation == "cpp" and py_version >= (3, 11): session.skip("cpp implementation is not supported in python 3.11+") # Install all dependencies From e2f6f0f1bee6ea67c07f40b16be73894c8890ba6 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Mon, 13 Oct 2025 14:04:26 -0700 Subject: [PATCH 17/41] updated python versions --- .github/sync-repo-settings.yaml | 4 +--- noxfile.py | 4 ++-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml index bcb6d8ef1..ef7f9b782 100644 --- a/.github/sync-repo-settings.yaml +++ b/.github/sync-repo-settings.yaml @@ -29,15 +29,13 @@ branchProtectionRules: # List of required status check contexts that must pass for commits to be accepted to matching branches. requiredStatusCheckContexts: - 'Kokoro' - - 'Kokoro system-3.8' + - 'Kokoro system-3.9' - 'cla/google' - 'OwlBot Post Processor' - 'lint' - 'mypy' - 'docs' - 'docfx' - - 'unit-3.7' - - 'unit-3.8' - 'unit-3.9' - 'unit-3.10' - 'unit-3.11' diff --git a/noxfile.py b/noxfile.py index 9f793af32..5ac4c3138 100644 --- a/noxfile.py +++ b/noxfile.py @@ -32,7 +32,7 @@ ISORT_VERSION = "isort==5.11.0" LINT_PATHS = ["docs", "google", "tests", "noxfile.py", "setup.py"] -DEFAULT_PYTHON_VERSION = "3.8" +DEFAULT_PYTHON_VERSION = "3.9" UNIT_TEST_PYTHON_VERSIONS: List[str] = [ "3.7", @@ -59,7 +59,7 @@ UNIT_TEST_EXTRAS: List[str] = [] UNIT_TEST_EXTRAS_BY_PYTHON: Dict[str, List[str]] = {} -SYSTEM_TEST_PYTHON_VERSIONS: List[str] = ["3.8", "3.14"] +SYSTEM_TEST_PYTHON_VERSIONS: List[str] = ["3.9", "3.14"] SYSTEM_TEST_STANDARD_DEPENDENCIES: List[str] = [ "mock", "pytest", From 366e5e54e4cb6ce0ca64128b23ed415779c67ff4 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Mon, 13 Oct 2025 15:02:02 -0700 Subject: [PATCH 18/41] updated test configs --- .kokoro/presubmit/{system-3.8.cfg => system-3.9.cfg} | 4 ++-- noxfile.py | 4 +--- 2 files changed, 3 insertions(+), 5 deletions(-) rename .kokoro/presubmit/{system-3.8.cfg => system-3.9.cfg} (81%) diff --git a/.kokoro/presubmit/system-3.8.cfg b/.kokoro/presubmit/system-3.9.cfg similarity index 81% rename from .kokoro/presubmit/system-3.8.cfg rename to .kokoro/presubmit/system-3.9.cfg index f4bcee3db..bd1fb514b 100644 --- a/.kokoro/presubmit/system-3.8.cfg +++ b/.kokoro/presubmit/system-3.9.cfg @@ -3,5 +3,5 @@ # Only run this nox session. env_vars: { key: "NOX_SESSION" - value: "system-3.8" -} \ No newline at end of file + value: "system-3.9" +} diff --git a/noxfile.py b/noxfile.py index 5ac4c3138..e3b8a168e 100644 --- a/noxfile.py +++ b/noxfile.py @@ -32,11 +32,9 @@ ISORT_VERSION = "isort==5.11.0" LINT_PATHS = ["docs", "google", "tests", "noxfile.py", "setup.py"] -DEFAULT_PYTHON_VERSION = "3.9" +DEFAULT_PYTHON_VERSION = "3.8" UNIT_TEST_PYTHON_VERSIONS: List[str] = [ - "3.7", - "3.8", "3.9", "3.10", "3.11", From d93ba56670151dbbd87b85197282f101d64378df Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Mon, 13 Oct 2025 15:05:47 -0700 Subject: [PATCH 19/41] removed unit test configs --- .github/workflows/unittest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml index d59bbb1b8..ea0494eb2 100644 --- a/.github/workflows/unittest.yml +++ b/.github/workflows/unittest.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-22.04 strategy: matrix: - python: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] + python: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] steps: - name: Checkout uses: actions/checkout@v4 From 5dc51a0e413b6e47d71f6b338fde86e87f053b2d Mon Sep 17 00:00:00 2001 From: Owl Bot Date: Mon, 13 Oct 2025 22:06:17 +0000 Subject: [PATCH 20/41] =?UTF-8?q?=F0=9F=A6=89=20Updates=20from=20OwlBot=20?= =?UTF-8?q?post-processor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --- .kokoro/presubmit/system-3.8.cfg | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .kokoro/presubmit/system-3.8.cfg diff --git a/.kokoro/presubmit/system-3.8.cfg b/.kokoro/presubmit/system-3.8.cfg new file mode 100644 index 000000000..f4bcee3db --- /dev/null +++ b/.kokoro/presubmit/system-3.8.cfg @@ -0,0 +1,7 @@ +# Format: //devtools/kokoro/config/proto/build.proto + +# Only run this nox session. +env_vars: { + key: "NOX_SESSION" + value: "system-3.8" +} \ No newline at end of file From 811f09475df8ee2db8add594ee46a410838950ff Mon Sep 17 00:00:00 2001 From: Owl Bot Date: Mon, 13 Oct 2025 22:08:35 +0000 Subject: [PATCH 21/41] =?UTF-8?q?=F0=9F=A6=89=20Updates=20from=20OwlBot=20?= =?UTF-8?q?post-processor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --- .github/workflows/unittest.yml | 2 +- .kokoro/presubmit/system-3.8.cfg | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 .kokoro/presubmit/system-3.8.cfg diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml index ea0494eb2..d59bbb1b8 100644 --- a/.github/workflows/unittest.yml +++ b/.github/workflows/unittest.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-22.04 strategy: matrix: - python: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] + python: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] steps: - name: Checkout uses: actions/checkout@v4 diff --git a/.kokoro/presubmit/system-3.8.cfg b/.kokoro/presubmit/system-3.8.cfg new file mode 100644 index 000000000..f4bcee3db --- /dev/null +++ b/.kokoro/presubmit/system-3.8.cfg @@ -0,0 +1,7 @@ +# Format: //devtools/kokoro/config/proto/build.proto + +# Only run this nox session. +env_vars: { + key: "NOX_SESSION" + value: "system-3.8" +} \ No newline at end of file From e82362db3e89b97b52d7287cfaad56dcfabba8e8 Mon Sep 17 00:00:00 2001 From: Owl Bot Date: Mon, 13 Oct 2025 22:09:03 +0000 Subject: [PATCH 22/41] =?UTF-8?q?=F0=9F=A6=89=20Updates=20from=20OwlBot=20?= =?UTF-8?q?post-processor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --- .github/workflows/unittest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml index ea0494eb2..d59bbb1b8 100644 --- a/.github/workflows/unittest.yml +++ b/.github/workflows/unittest.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-22.04 strategy: matrix: - python: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] + python: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] steps: - name: Checkout uses: actions/checkout@v4 From 343522c514bf5616ce12dfd2fbcde4aabf80ee19 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Mon, 13 Oct 2025 15:12:12 -0700 Subject: [PATCH 23/41] updated unit test versions --- owlbot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/owlbot.py b/owlbot.py index c2d571c48..fd0f506a3 100644 --- a/owlbot.py +++ b/owlbot.py @@ -109,7 +109,7 @@ def get_staging_dirs( system_test_external_dependencies=[ "pytest-asyncio==0.21.2", ], - unit_test_python_versions=["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"], + unit_test_python_versions=["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"], ) s.move(templated_files, excludes=[".coveragerc", "README.rst", ".github/release-please.yml", "noxfile.py", "renovate.json"]) From 0f63309c880ee13cfa63285946015168fc38a13e Mon Sep 17 00:00:00 2001 From: Owl Bot Date: Mon, 13 Oct 2025 22:14:51 +0000 Subject: [PATCH 24/41] =?UTF-8?q?=F0=9F=A6=89=20Updates=20from=20OwlBot=20?= =?UTF-8?q?post-processor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --- .github/workflows/unittest.yml | 2 +- CONTRIBUTING.rst | 8 ++------ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml index d59bbb1b8..ea0494eb2 100644 --- a/.github/workflows/unittest.yml +++ b/.github/workflows/unittest.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-22.04 strategy: matrix: - python: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] + python: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] steps: - name: Checkout uses: actions/checkout@v4 diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 4eb02dbac..10d4455d1 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -22,7 +22,7 @@ In order to add a feature: documentation. - The feature must work fully on the following CPython versions: - 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 and 3.14 on both UNIX and Windows. + 3.9, 3.10, 3.11, 3.12, 3.13 and 3.14 on both UNIX and Windows. - The feature must not add unnecessary dependencies (where "unnecessary" is of course subjective, but new dependencies should @@ -221,8 +221,6 @@ Supported Python Versions We support: -- `Python 3.7`_ -- `Python 3.8`_ - `Python 3.9`_ - `Python 3.10`_ - `Python 3.11`_ @@ -230,8 +228,6 @@ We support: - `Python 3.13`_ - `Python 3.14`_ -.. _Python 3.7: https://docs.python.org/3.7/ -.. _Python 3.8: https://docs.python.org/3.8/ .. _Python 3.9: https://docs.python.org/3.9/ .. _Python 3.10: https://docs.python.org/3.10/ .. _Python 3.11: https://docs.python.org/3.11/ @@ -245,7 +241,7 @@ Supported versions can be found in our ``noxfile.py`` `config`_. .. _config: https://github.com/googleapis/python-bigtable/blob/main/noxfile.py -We also explicitly decided to support Python 3 beginning with version 3.7. +We also explicitly decided to support Python 3 beginning with version 3.9. Reasons for this include: - Encouraging use of newest versions of Python 3 From 1f811d71a4214e0f0bf8f2563bd0aeb504b84337 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Mon, 13 Oct 2025 15:37:56 -0700 Subject: [PATCH 25/41] changed strategy for old python versions --- .kokoro/presubmit/system-3.8.cfg | 7 ------- noxfile.py | 5 +++++ owlbot.py | 2 +- 3 files changed, 6 insertions(+), 8 deletions(-) delete mode 100644 .kokoro/presubmit/system-3.8.cfg diff --git a/.kokoro/presubmit/system-3.8.cfg b/.kokoro/presubmit/system-3.8.cfg deleted file mode 100644 index f4bcee3db..000000000 --- a/.kokoro/presubmit/system-3.8.cfg +++ /dev/null @@ -1,7 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Only run this nox session. -env_vars: { - key: "NOX_SESSION" - value: "system-3.8" -} \ No newline at end of file diff --git a/noxfile.py b/noxfile.py index e3b8a168e..ff859961f 100644 --- a/noxfile.py +++ b/noxfile.py @@ -209,6 +209,11 @@ def unit(session, protobuf_implementation): if protobuf_implementation == "cpp" and py_version >= (3, 11): session.skip("cpp implementation is not supported in python 3.11+") + # Skip python 3.7 and 3.8 tests if not available in kokoro environment + # TODO: remove when 3.7 and 3.8 are dropped + if py_version < (3, 9) and os.getenv("KOKORO_BUILD_ID"): + session.skip("skipping deprecated python versions") + constraints_path = str( CURRENT_DIRECTORY / "testing" / f"constraints-{session.python}.txt" ) diff --git a/owlbot.py b/owlbot.py index fd0f506a3..c2d571c48 100644 --- a/owlbot.py +++ b/owlbot.py @@ -109,7 +109,7 @@ def get_staging_dirs( system_test_external_dependencies=[ "pytest-asyncio==0.21.2", ], - unit_test_python_versions=["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"], + unit_test_python_versions=["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"], ) s.move(templated_files, excludes=[".coveragerc", "README.rst", ".github/release-please.yml", "noxfile.py", "renovate.json"]) From 40d19c9c210831c7de66d70bce5648b7f8de72ae Mon Sep 17 00:00:00 2001 From: Owl Bot Date: Mon, 13 Oct 2025 22:41:33 +0000 Subject: [PATCH 26/41] =?UTF-8?q?=F0=9F=A6=89=20Updates=20from=20OwlBot=20?= =?UTF-8?q?post-processor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --- .github/workflows/unittest.yml | 2 +- .kokoro/presubmit/system-3.8.cfg | 7 +++++++ CONTRIBUTING.rst | 8 ++++++-- 3 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 .kokoro/presubmit/system-3.8.cfg diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml index ea0494eb2..d59bbb1b8 100644 --- a/.github/workflows/unittest.yml +++ b/.github/workflows/unittest.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-22.04 strategy: matrix: - python: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] + python: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] steps: - name: Checkout uses: actions/checkout@v4 diff --git a/.kokoro/presubmit/system-3.8.cfg b/.kokoro/presubmit/system-3.8.cfg new file mode 100644 index 000000000..f4bcee3db --- /dev/null +++ b/.kokoro/presubmit/system-3.8.cfg @@ -0,0 +1,7 @@ +# Format: //devtools/kokoro/config/proto/build.proto + +# Only run this nox session. +env_vars: { + key: "NOX_SESSION" + value: "system-3.8" +} \ No newline at end of file diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 10d4455d1..4eb02dbac 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -22,7 +22,7 @@ In order to add a feature: documentation. - The feature must work fully on the following CPython versions: - 3.9, 3.10, 3.11, 3.12, 3.13 and 3.14 on both UNIX and Windows. + 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 and 3.14 on both UNIX and Windows. - The feature must not add unnecessary dependencies (where "unnecessary" is of course subjective, but new dependencies should @@ -221,6 +221,8 @@ Supported Python Versions We support: +- `Python 3.7`_ +- `Python 3.8`_ - `Python 3.9`_ - `Python 3.10`_ - `Python 3.11`_ @@ -228,6 +230,8 @@ We support: - `Python 3.13`_ - `Python 3.14`_ +.. _Python 3.7: https://docs.python.org/3.7/ +.. _Python 3.8: https://docs.python.org/3.8/ .. _Python 3.9: https://docs.python.org/3.9/ .. _Python 3.10: https://docs.python.org/3.10/ .. _Python 3.11: https://docs.python.org/3.11/ @@ -241,7 +245,7 @@ Supported versions can be found in our ``noxfile.py`` `config`_. .. _config: https://github.com/googleapis/python-bigtable/blob/main/noxfile.py -We also explicitly decided to support Python 3 beginning with version 3.9. +We also explicitly decided to support Python 3 beginning with version 3.7. Reasons for this include: - Encouraging use of newest versions of Python 3 From bdfb1a75650e53eda4cf4cdb6adc7303b8edf394 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Mon, 13 Oct 2025 15:43:18 -0700 Subject: [PATCH 27/41] added system_tests_versions --- .kokoro/presubmit/system-3.9.cfg | 7 ------- owlbot.py | 1 + 2 files changed, 1 insertion(+), 7 deletions(-) delete mode 100644 .kokoro/presubmit/system-3.9.cfg diff --git a/.kokoro/presubmit/system-3.9.cfg b/.kokoro/presubmit/system-3.9.cfg deleted file mode 100644 index bd1fb514b..000000000 --- a/.kokoro/presubmit/system-3.9.cfg +++ /dev/null @@ -1,7 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Only run this nox session. -env_vars: { - key: "NOX_SESSION" - value: "system-3.9" -} diff --git a/owlbot.py b/owlbot.py index c2d571c48..25a218b53 100644 --- a/owlbot.py +++ b/owlbot.py @@ -109,6 +109,7 @@ def get_staging_dirs( system_test_external_dependencies=[ "pytest-asyncio==0.21.2", ], + system_test_python_versions=["3.9", "3.14"], unit_test_python_versions=["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"], ) From 55522e5b3c1665c2865673121d3de7ef385b1a33 Mon Sep 17 00:00:00 2001 From: Owl Bot Date: Mon, 13 Oct 2025 22:46:36 +0000 Subject: [PATCH 28/41] =?UTF-8?q?=F0=9F=A6=89=20Updates=20from=20OwlBot=20?= =?UTF-8?q?post-processor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --- .kokoro/presubmit/system-3.14.cfg | 7 +++++++ .kokoro/presubmit/system-3.9.cfg | 7 +++++++ CONTRIBUTING.rst | 4 ++-- 3 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 .kokoro/presubmit/system-3.14.cfg create mode 100644 .kokoro/presubmit/system-3.9.cfg diff --git a/.kokoro/presubmit/system-3.14.cfg b/.kokoro/presubmit/system-3.14.cfg new file mode 100644 index 000000000..86e7c5d77 --- /dev/null +++ b/.kokoro/presubmit/system-3.14.cfg @@ -0,0 +1,7 @@ +# Format: //devtools/kokoro/config/proto/build.proto + +# Only run this nox session. +env_vars: { + key: "NOX_SESSION" + value: "system-3.14" +} \ No newline at end of file diff --git a/.kokoro/presubmit/system-3.9.cfg b/.kokoro/presubmit/system-3.9.cfg new file mode 100644 index 000000000..b8ae66b37 --- /dev/null +++ b/.kokoro/presubmit/system-3.9.cfg @@ -0,0 +1,7 @@ +# Format: //devtools/kokoro/config/proto/build.proto + +# Only run this nox session. +env_vars: { + key: "NOX_SESSION" + value: "system-3.9" +} \ No newline at end of file diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 4eb02dbac..f092f3fe9 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -143,12 +143,12 @@ Running System Tests $ nox -s system # Run a single system test - $ nox -s system-3.8 -- -k + $ nox -s system-3.14 -- -k .. note:: - System tests are only configured to run under Python 3.8. + System tests are only configured to run under Python 3.9 and 3.14. For expediency, we do not run them in older versions of Python 3. This alone will not run the tests. You'll need to change some local From 19df3e650a2e0f3f2a87b55c19079ac0e9c2a14d Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Mon, 13 Oct 2025 15:48:04 -0700 Subject: [PATCH 29/41] only one system test --- noxfile.py | 2 ++ owlbot.py | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/noxfile.py b/noxfile.py index ff859961f..5fa60b634 100644 --- a/noxfile.py +++ b/noxfile.py @@ -35,6 +35,8 @@ DEFAULT_PYTHON_VERSION = "3.8" UNIT_TEST_PYTHON_VERSIONS: List[str] = [ + "3.7", + "3.8", "3.9", "3.10", "3.11", diff --git a/owlbot.py b/owlbot.py index 25a218b53..b6b741b54 100644 --- a/owlbot.py +++ b/owlbot.py @@ -109,7 +109,7 @@ def get_staging_dirs( system_test_external_dependencies=[ "pytest-asyncio==0.21.2", ], - system_test_python_versions=["3.9", "3.14"], + system_test_python_versions=["3.9"], unit_test_python_versions=["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"], ) From ddb5d1fa70f9124753282238c99456b3b937fb98 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Mon, 13 Oct 2025 15:48:49 -0700 Subject: [PATCH 30/41] removed old configs --- .kokoro/presubmit/system-3.14.cfg | 7 ------- .kokoro/presubmit/system-3.8.cfg | 7 ------- 2 files changed, 14 deletions(-) delete mode 100644 .kokoro/presubmit/system-3.14.cfg delete mode 100644 .kokoro/presubmit/system-3.8.cfg diff --git a/.kokoro/presubmit/system-3.14.cfg b/.kokoro/presubmit/system-3.14.cfg deleted file mode 100644 index 86e7c5d77..000000000 --- a/.kokoro/presubmit/system-3.14.cfg +++ /dev/null @@ -1,7 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Only run this nox session. -env_vars: { - key: "NOX_SESSION" - value: "system-3.14" -} \ No newline at end of file diff --git a/.kokoro/presubmit/system-3.8.cfg b/.kokoro/presubmit/system-3.8.cfg deleted file mode 100644 index f4bcee3db..000000000 --- a/.kokoro/presubmit/system-3.8.cfg +++ /dev/null @@ -1,7 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Only run this nox session. -env_vars: { - key: "NOX_SESSION" - value: "system-3.8" -} \ No newline at end of file From dd956d1314235ff1e95984e0b36f23ca8d655128 Mon Sep 17 00:00:00 2001 From: Owl Bot Date: Mon, 13 Oct 2025 22:50:45 +0000 Subject: [PATCH 31/41] =?UTF-8?q?=F0=9F=A6=89=20Updates=20from=20OwlBot=20?= =?UTF-8?q?post-processor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --- CONTRIBUTING.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index f092f3fe9..07ac8f218 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -143,12 +143,12 @@ Running System Tests $ nox -s system # Run a single system test - $ nox -s system-3.14 -- -k + $ nox -s system-3.9 -- -k .. note:: - System tests are only configured to run under Python 3.9 and 3.14. + System tests are only configured to run under Python 3.9. For expediency, we do not run them in older versions of Python 3. This alone will not run the tests. You'll need to change some local From fa245afd9533cce71bb37dd6c81807d4d97a35b2 Mon Sep 17 00:00:00 2001 From: Owl Bot Date: Mon, 13 Oct 2025 22:51:36 +0000 Subject: [PATCH 32/41] =?UTF-8?q?=F0=9F=A6=89=20Updates=20from=20OwlBot=20?= =?UTF-8?q?post-processor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --- CONTRIBUTING.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index f092f3fe9..07ac8f218 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -143,12 +143,12 @@ Running System Tests $ nox -s system # Run a single system test - $ nox -s system-3.14 -- -k + $ nox -s system-3.9 -- -k .. note:: - System tests are only configured to run under Python 3.9 and 3.14. + System tests are only configured to run under Python 3.9. For expediency, we do not run them in older versions of Python 3. This alone will not run the tests. You'll need to change some local From bf7dc8d08ccc5f884ff3ea7f298419499c3009e9 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Tue, 14 Oct 2025 16:33:21 -0700 Subject: [PATCH 33/41] fix kokoro configs --- .kokoro/presubmit/common.cfg | 6 ++++++ .kokoro/presubmit/system.cfg | 7 +++++++ mypy.ini | 12 +++++++++++- noxfile.py | 22 ++-------------------- 4 files changed, 26 insertions(+), 21 deletions(-) create mode 100644 .kokoro/presubmit/system.cfg diff --git a/.kokoro/presubmit/common.cfg b/.kokoro/presubmit/common.cfg index 69e0570b8..e9c513406 100644 --- a/.kokoro/presubmit/common.cfg +++ b/.kokoro/presubmit/common.cfg @@ -7,6 +7,12 @@ action { } } +# TODO: remove after deprecating 3.7 and 3.8 +env_vars: { + key: "NOX_SESSION" + value: "unit-3.9 unit-3.10 unit-3.11 unit-3.12 unit-3.13 unit-3.14 docs lint lint_setup_py blacken cover" +} + # Download trampoline resources. gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline" diff --git a/.kokoro/presubmit/system.cfg b/.kokoro/presubmit/system.cfg new file mode 100644 index 000000000..b8ae66b37 --- /dev/null +++ b/.kokoro/presubmit/system.cfg @@ -0,0 +1,7 @@ +# Format: //devtools/kokoro/config/proto/build.proto + +# Only run this nox session. +env_vars: { + key: "NOX_SESSION" + value: "system-3.9" +} \ No newline at end of file diff --git a/mypy.ini b/mypy.ini index 31cc24223..9974b56c2 100644 --- a/mypy.ini +++ b/mypy.ini @@ -1,6 +1,9 @@ [mypy] -python_version = 3.8 +python_version = 3.9 namespace_packages = True +check_untyped_defs = True +warn_unreachable = True +disallow_any_generics = True exclude = tests/unit/gapic/ [mypy-grpc.*] @@ -26,3 +29,10 @@ ignore_missing_imports = True [mypy-pytest] ignore_missing_imports = True + +[mypy-google.cloud.*] +ignore_errors = True + +# only verify data client +[mypy-google.cloud.bigtable.data.*] +ignore_errors = False diff --git a/noxfile.py b/noxfile.py index 5fa60b634..0be3d184e 100644 --- a/noxfile.py +++ b/noxfile.py @@ -32,7 +32,7 @@ ISORT_VERSION = "isort==5.11.0" LINT_PATHS = ["docs", "google", "tests", "noxfile.py", "setup.py"] -DEFAULT_PYTHON_VERSION = "3.8" +DEFAULT_PYTHON_VERSION = "3.9" UNIT_TEST_PYTHON_VERSIONS: List[str] = [ "3.7", @@ -149,20 +149,7 @@ def mypy(session): "mypy", "types-setuptools", "types-protobuf", "types-mock", "types-requests" ) session.install("google-cloud-testutils") - session.run( - "mypy", - "-p", - "google.cloud.bigtable.data", - "--check-untyped-defs", - "--warn-unreachable", - "--disallow-any-generics", - "--exclude", - "tests/system/v2_client", - "--exclude", - "tests/unit/v2_client", - "--disable-error-code", - "func-returns-value", # needed for CrossSync.rm_aio - ) + session.run("mypy", "-p", "google.cloud.bigtable.data") @nox.session(python=DEFAULT_PYTHON_VERSION) @@ -211,11 +198,6 @@ def unit(session, protobuf_implementation): if protobuf_implementation == "cpp" and py_version >= (3, 11): session.skip("cpp implementation is not supported in python 3.11+") - # Skip python 3.7 and 3.8 tests if not available in kokoro environment - # TODO: remove when 3.7 and 3.8 are dropped - if py_version < (3, 9) and os.getenv("KOKORO_BUILD_ID"): - session.skip("skipping deprecated python versions") - constraints_path = str( CURRENT_DIRECTORY / "testing" / f"constraints-{session.python}.txt" ) From 9e593eb3db7e52ab6906167245dee825e8c60474 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Tue, 14 Oct 2025 16:39:57 -0700 Subject: [PATCH 34/41] updated python version in Github Actions --- .github/workflows/conformance.yaml | 2 +- .github/workflows/lint.yml | 2 +- .github/workflows/mypy.yml | 2 +- .github/workflows/system_emulated.yml | 2 +- .github/workflows/unittest.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/conformance.yaml b/.github/workflows/conformance.yaml index 6a96a87d3..42d05b9ae 100644 --- a/.github/workflows/conformance.yaml +++ b/.github/workflows/conformance.yaml @@ -25,7 +25,7 @@ jobs: strategy: matrix: test-version: [ "v0.0.4" ] - py-version: [ 3.8 ] + py-version: [ 3.9 ] client-type: [ "async", "sync"] # None of the clients currently support reverse scans, execute query plan refresh, retry info, or routing cookie include: diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 4866193af..35b2ef7d4 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -12,7 +12,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v5 with: - python-version: "3.8" + python-version: "3.9" - name: Install nox run: | python -m pip install --upgrade setuptools pip wheel diff --git a/.github/workflows/mypy.yml b/.github/workflows/mypy.yml index 3915cddd3..fc12e5306 100644 --- a/.github/workflows/mypy.yml +++ b/.github/workflows/mypy.yml @@ -12,7 +12,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v5 with: - python-version: "3.8" + python-version: "3.9" - name: Install nox run: | python -m pip install --upgrade setuptools pip wheel diff --git a/.github/workflows/system_emulated.yml b/.github/workflows/system_emulated.yml index c9dab998c..acb9bc383 100644 --- a/.github/workflows/system_emulated.yml +++ b/.github/workflows/system_emulated.yml @@ -17,7 +17,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v5 with: - python-version: '3.8' + python-version: '3.9' - name: Setup GCloud SDK uses: google-github-actions/setup-gcloud@v2.1.1 diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml index d59bbb1b8..41089c253 100644 --- a/.github/workflows/unittest.yml +++ b/.github/workflows/unittest.yml @@ -45,7 +45,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v5 with: - python-version: "3.8" + python-version: "3.9" - name: Install coverage run: | python -m pip install --upgrade setuptools pip wheel From e00215a705918559ba7a2a47af4f83e6a01f2185 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Tue, 14 Oct 2025 16:57:52 -0700 Subject: [PATCH 35/41] fixing noxfile --- .kokoro/presubmit/common.cfg | 2 +- .kokoro/presubmit/presubmit.cfg | 6 ++++++ noxfile.py | 9 +++++++-- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/.kokoro/presubmit/common.cfg b/.kokoro/presubmit/common.cfg index e9c513406..5fb3bd311 100644 --- a/.kokoro/presubmit/common.cfg +++ b/.kokoro/presubmit/common.cfg @@ -7,7 +7,7 @@ action { } } -# TODO: remove after deprecating 3.7 and 3.8 +# TODO: remove explicit session setting after deprecating 3.7 and 3.8 env_vars: { key: "NOX_SESSION" value: "unit-3.9 unit-3.10 unit-3.11 unit-3.12 unit-3.13 unit-3.14 docs lint lint_setup_py blacken cover" diff --git a/.kokoro/presubmit/presubmit.cfg b/.kokoro/presubmit/presubmit.cfg index b158096f0..7b2c9fe8c 100644 --- a/.kokoro/presubmit/presubmit.cfg +++ b/.kokoro/presubmit/presubmit.cfg @@ -5,3 +5,9 @@ env_vars: { key: "RUN_SYSTEM_TESTS" value: "false" } + +# TODO: remove explicit session setting after deprecating 3.7 and 3.8 +env_vars: { + key: "NOX_SESSION" + value: "unit-3.9 unit-3.10 unit-3.11 unit-3.12 unit-3.13 unit-3.14 docs lint lint_setup_py blacken cover" +} diff --git a/noxfile.py b/noxfile.py index 0be3d184e..8ca3e7341 100644 --- a/noxfile.py +++ b/noxfile.py @@ -79,7 +79,12 @@ # 'docfx' is excluded since it only needs to run in 'docs-presubmit' nox.options.sessions = [ - "unit", + "unit-3.9", + "unit-3.10", + "unit-3.11", + "unit-3.12", + "unit-3.13", + "unit-3.14", "system_emulated", "system", "mypy", @@ -258,7 +263,7 @@ def install_systemtest_dependencies(session, *constraints): session.install("-e", ".", *constraints) -@nox.session(python="3.8") +@nox.session(python=DEFAULT_PYTHON_VERSION) def system_emulated(session): import subprocess import signal From ccdc3bd9caf8a649f5f16227bd228a77ec22f7b4 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Tue, 14 Oct 2025 17:11:31 -0700 Subject: [PATCH 36/41] removed env var --- .kokoro/presubmit/presubmit.cfg | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.kokoro/presubmit/presubmit.cfg b/.kokoro/presubmit/presubmit.cfg index 7b2c9fe8c..b158096f0 100644 --- a/.kokoro/presubmit/presubmit.cfg +++ b/.kokoro/presubmit/presubmit.cfg @@ -5,9 +5,3 @@ env_vars: { key: "RUN_SYSTEM_TESTS" value: "false" } - -# TODO: remove explicit session setting after deprecating 3.7 and 3.8 -env_vars: { - key: "NOX_SESSION" - value: "unit-3.9 unit-3.10 unit-3.11 unit-3.12 unit-3.13 unit-3.14 docs lint lint_setup_py blacken cover" -} From 999a57ffb582812d937942d720ec448d1effe2c9 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Wed, 15 Oct 2025 13:39:10 -0700 Subject: [PATCH 37/41] updated system test name --- .github/sync-repo-settings.yaml | 2 +- .kokoro/presubmit/common.cfg | 6 ------ 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml index ef7f9b782..14e32d6fc 100644 --- a/.github/sync-repo-settings.yaml +++ b/.github/sync-repo-settings.yaml @@ -29,7 +29,7 @@ branchProtectionRules: # List of required status check contexts that must pass for commits to be accepted to matching branches. requiredStatusCheckContexts: - 'Kokoro' - - 'Kokoro system-3.9' + - 'Kokoro system' - 'cla/google' - 'OwlBot Post Processor' - 'lint' diff --git a/.kokoro/presubmit/common.cfg b/.kokoro/presubmit/common.cfg index 5fb3bd311..69e0570b8 100644 --- a/.kokoro/presubmit/common.cfg +++ b/.kokoro/presubmit/common.cfg @@ -7,12 +7,6 @@ action { } } -# TODO: remove explicit session setting after deprecating 3.7 and 3.8 -env_vars: { - key: "NOX_SESSION" - value: "unit-3.9 unit-3.10 unit-3.11 unit-3.12 unit-3.13 unit-3.14 docs lint lint_setup_py blacken cover" -} - # Download trampoline resources. gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline" From 3cb51addaea80ff2648bd57e0679e0942ee450c5 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Wed, 15 Oct 2025 16:25:28 -0700 Subject: [PATCH 38/41] updated default python version --- .github/workflows/conformance.yaml | 2 +- .github/workflows/lint.yml | 2 +- .github/workflows/mypy.yml | 2 +- .github/workflows/system_emulated.yml | 2 +- .github/workflows/unittest.yml | 2 +- google/cloud/bigtable/data/exceptions.py | 2 +- google/cloud/bigtable/data/row.py | 2 +- mypy.ini | 2 +- noxfile.py | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/conformance.yaml b/.github/workflows/conformance.yaml index 42d05b9ae..f7396eaa9 100644 --- a/.github/workflows/conformance.yaml +++ b/.github/workflows/conformance.yaml @@ -25,7 +25,7 @@ jobs: strategy: matrix: test-version: [ "v0.0.4" ] - py-version: [ 3.9 ] + py-version: [ 3.13 ] client-type: [ "async", "sync"] # None of the clients currently support reverse scans, execute query plan refresh, retry info, or routing cookie include: diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 35b2ef7d4..9a0598202 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -12,7 +12,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v5 with: - python-version: "3.9" + python-version: "3.13" - name: Install nox run: | python -m pip install --upgrade setuptools pip wheel diff --git a/.github/workflows/mypy.yml b/.github/workflows/mypy.yml index fc12e5306..f2b78a536 100644 --- a/.github/workflows/mypy.yml +++ b/.github/workflows/mypy.yml @@ -12,7 +12,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v5 with: - python-version: "3.9" + python-version: "3.13" - name: Install nox run: | python -m pip install --upgrade setuptools pip wheel diff --git a/.github/workflows/system_emulated.yml b/.github/workflows/system_emulated.yml index acb9bc383..d8bbbb639 100644 --- a/.github/workflows/system_emulated.yml +++ b/.github/workflows/system_emulated.yml @@ -17,7 +17,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v5 with: - python-version: '3.9' + python-version: '3.13' - name: Setup GCloud SDK uses: google-github-actions/setup-gcloud@v2.1.1 diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml index 41089c253..dad646c6b 100644 --- a/.github/workflows/unittest.yml +++ b/.github/workflows/unittest.yml @@ -45,7 +45,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v5 with: - python-version: "3.9" + python-version: "3.13" - name: Install coverage run: | python -m pip install --upgrade setuptools pip wheel diff --git a/google/cloud/bigtable/data/exceptions.py b/google/cloud/bigtable/data/exceptions.py index 5645ae3aa..b19e0e5ea 100644 --- a/google/cloud/bigtable/data/exceptions.py +++ b/google/cloud/bigtable/data/exceptions.py @@ -90,7 +90,7 @@ def __init__(self, message, excs): # apply index header if idx != 0: message_parts.append( - f"+---------------- {str(idx+1).rjust(2)} ----------------" + f"+---------------- {str(idx + 1).rjust(2)} ----------------" ) cause = e.__cause__ # if this exception was had a cause, print the cause first diff --git a/google/cloud/bigtable/data/row.py b/google/cloud/bigtable/data/row.py index a5575b83a..50e65a958 100644 --- a/google/cloud/bigtable/data/row.py +++ b/google/cloud/bigtable/data/row.py @@ -190,7 +190,7 @@ def __str__(self) -> str: elif len(cell_list) == 1: line.append(f"[{cell_list[0]}],") else: - line.append(f"[{cell_list[0]}, (+{len(cell_list)-1} more)],") + line.append(f"[{cell_list[0]}, (+{len(cell_list) - 1} more)],") output.append("".join(line)) output.append("}") return "\n".join(output) diff --git a/mypy.ini b/mypy.ini index 9974b56c2..701b7587c 100644 --- a/mypy.ini +++ b/mypy.ini @@ -1,5 +1,5 @@ [mypy] -python_version = 3.9 +python_version = 3.13 namespace_packages = True check_untyped_defs = True warn_unreachable = True diff --git a/noxfile.py b/noxfile.py index 8ca3e7341..cbc47fe33 100644 --- a/noxfile.py +++ b/noxfile.py @@ -32,7 +32,7 @@ ISORT_VERSION = "isort==5.11.0" LINT_PATHS = ["docs", "google", "tests", "noxfile.py", "setup.py"] -DEFAULT_PYTHON_VERSION = "3.9" +DEFAULT_PYTHON_VERSION = "3.13" UNIT_TEST_PYTHON_VERSIONS: List[str] = [ "3.7", From 4824329cc57c3afb5da88ebcf30430d0770bdee3 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Wed, 15 Oct 2025 16:40:59 -0700 Subject: [PATCH 39/41] fixed owlbot --- .github/.OwlBot.lock.yaml | 4 ++-- noxfile.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml index c631e1f7d..9a7846675 100644 --- a/.github/.OwlBot.lock.yaml +++ b/.github/.OwlBot.lock.yaml @@ -13,5 +13,5 @@ # limitations under the License. docker: image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest - digest: sha256:5581906b957284864632cde4e9c51d1cc66b0094990b27e689132fe5cd036046 -# created: 2025-03-05 + digest: sha256:4a9e5d44b98e8672e2037ee22bc6b4f8e844a2d75fcb78ea8a4b38510112abc6 +# created: 2025-10-07 diff --git a/noxfile.py b/noxfile.py index cbc47fe33..cbc0033d0 100644 --- a/noxfile.py +++ b/noxfile.py @@ -28,7 +28,7 @@ import nox FLAKE8_VERSION = "flake8==6.1.0" -BLACK_VERSION = "black[jupyter]==23.3.0" +BLACK_VERSION = "black[jupyter]==23.7.0" ISORT_VERSION = "isort==5.11.0" LINT_PATHS = ["docs", "google", "tests", "noxfile.py", "setup.py"] @@ -160,7 +160,7 @@ def mypy(session): @nox.session(python=DEFAULT_PYTHON_VERSION) def lint_setup_py(session): """Verify that setup.py is valid (including RST check).""" - session.install("docutils", "pygments") + session.install("setuptools", "docutils", "pygments") session.run("python", "setup.py", "check", "--restructuredtext", "--strict") From fd45cd78d28744bf5e3905951cee74baf29b7822 Mon Sep 17 00:00:00 2001 From: Owl Bot Date: Wed, 15 Oct 2025 23:43:28 +0000 Subject: [PATCH 40/41] =?UTF-8?q?=F0=9F=A6=89=20Updates=20from=20OwlBot=20?= =?UTF-8?q?post-processor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --- .github/workflows/lint.yml | 2 +- .github/workflows/unittest.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 9a0598202..4866193af 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -12,7 +12,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v5 with: - python-version: "3.13" + python-version: "3.8" - name: Install nox run: | python -m pip install --upgrade setuptools pip wheel diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml index dad646c6b..d59bbb1b8 100644 --- a/.github/workflows/unittest.yml +++ b/.github/workflows/unittest.yml @@ -45,7 +45,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v5 with: - python-version: "3.13" + python-version: "3.8" - name: Install coverage run: | python -m pip install --upgrade setuptools pip wheel From 40187cae669173a89f540996a89c866e00df9ef3 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Wed, 15 Oct 2025 16:43:30 -0700 Subject: [PATCH 41/41] revert black --- noxfile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/noxfile.py b/noxfile.py index cbc0033d0..a182bafba 100644 --- a/noxfile.py +++ b/noxfile.py @@ -28,7 +28,7 @@ import nox FLAKE8_VERSION = "flake8==6.1.0" -BLACK_VERSION = "black[jupyter]==23.7.0" +BLACK_VERSION = "black[jupyter]==23.3.0" ISORT_VERSION = "isort==5.11.0" LINT_PATHS = ["docs", "google", "tests", "noxfile.py", "setup.py"]