From bd4c2925feb759b0631a33f36a8d43e2949813a8 Mon Sep 17 00:00:00 2001 From: Linchin Date: Mon, 15 Dec 2025 19:52:00 +0000 Subject: [PATCH 1/8] feat: support python 3.14 --- setup.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/setup.py b/setup.py index 5fb9599..93e1bda 100644 --- a/setup.py +++ b/setup.py @@ -53,6 +53,7 @@ # 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.75.1, < 2.0.0; python_version >= '3.14'", ], "bigframes": ["bigframes >= 1.17.0"], "geopandas": ["geopandas >= 1.0.1"], @@ -110,6 +111,7 @@ "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 3ecd584db5979fb99402256f9144440093e5b2a9 Mon Sep 17 00:00:00 2001 From: Lingqing Gan Date: Mon, 15 Dec 2025 11:54:22 -0800 Subject: [PATCH 2/8] Update setup.py Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 93e1bda..4bd317a 100644 --- a/setup.py +++ b/setup.py @@ -52,7 +52,7 @@ # 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.49.1, < 2.0.0; python_version >= '3.11' and python_version < '3.14'", "grpcio >= 1.75.1, < 2.0.0; python_version >= '3.14'", ], "bigframes": ["bigframes >= 1.17.0"], From 7111aa9faec1734af71778b2fd05498eeee8ce0b Mon Sep 17 00:00:00 2001 From: Linchin Date: Mon, 15 Dec 2025 20:00:43 +0000 Subject: [PATCH 3/8] add unit test --- noxfile.py | 2 +- testing/constraints-3.14.txt | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 testing/constraints-3.14.txt diff --git a/noxfile.py b/noxfile.py index 4c5dbd6..75919fa 100644 --- a/noxfile.py +++ b/noxfile.py @@ -34,7 +34,7 @@ DEFAULT_PYTHON_VERSION = "3.10" -UNIT_TEST_PYTHON_VERSIONS: List[str] = ["3.9", "3.11", "3.12", "3.13"] +UNIT_TEST_PYTHON_VERSIONS: List[str] = ["3.9", "3.11", "3.12", "3.13", "3.14"] UNIT_TEST_STANDARD_DEPENDENCIES = [ "mock", "asyncmock", diff --git a/testing/constraints-3.14.txt b/testing/constraints-3.14.txt new file mode 100644 index 0000000..a2b219c --- /dev/null +++ b/testing/constraints-3.14.txt @@ -0,0 +1,2 @@ +# IMPORTANT: When Python 3.12 support is dropped, update these to +# match the minimums in setup.py. From 46ea7fbc2c98f731bd69476af011453af95cc65e Mon Sep 17 00:00:00 2001 From: Linchin Date: Mon, 15 Dec 2025 20:03:20 +0000 Subject: [PATCH 4/8] add test sessions --- .kokoro/presubmit/prerelease-deps-3.14.cfg | 7 +++++++ .kokoro/presubmit/system-3.14.cfg | 7 +++++++ 2 files changed, 14 insertions(+) create mode 100644 .kokoro/presubmit/prerelease-deps-3.14.cfg create mode 100644 .kokoro/presubmit/system-3.14.cfg diff --git a/.kokoro/presubmit/prerelease-deps-3.14.cfg b/.kokoro/presubmit/prerelease-deps-3.14.cfg new file mode 100644 index 0000000..bf3534b --- /dev/null +++ b/.kokoro/presubmit/prerelease-deps-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: "prerelease_deps-3.14" +} diff --git a/.kokoro/presubmit/system-3.14.cfg b/.kokoro/presubmit/system-3.14.cfg new file mode 100644 index 0000000..7390414 --- /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" +} From 2fd61ee5f5913ca1497a60383dd7eb1ee6c13e0a Mon Sep 17 00:00:00 2001 From: Linchin Date: Mon, 15 Dec 2025 21:56:05 +0000 Subject: [PATCH 5/8] add github action for unit 3.14 --- .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 2ff94d3..4f06fe6 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.11', '3.12', '3.13'] + python: ['3.9', '3.11', '3.12', '3.13', '3.14'] steps: - name: Checkout uses: actions/checkout@v4 From 788c92d642c35fba3aca29320df8b82f0855d8e7 Mon Sep 17 00:00:00 2001 From: Linchin Date: Mon, 15 Dec 2025 22:04:37 +0000 Subject: [PATCH 6/8] update tests --- noxfile.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/noxfile.py b/noxfile.py index 75919fa..029f671 100644 --- a/noxfile.py +++ b/noxfile.py @@ -67,9 +67,14 @@ "bigframes", "geopandas", ], + "3.14": [ + "bqstorage", + "bigframes", + "geopandas", + ], } -SYSTEM_TEST_PYTHON_VERSIONS: List[str] = ["3.9", "3.11", "3.12", "3.13"] +SYSTEM_TEST_PYTHON_VERSIONS: List[str] = ["3.9", "3.11", "3.12", "3.13", "3.14"] SYSTEM_TEST_STANDARD_DEPENDENCIES: List[str] = [ "mock", "pytest", @@ -99,6 +104,11 @@ "bigframes", "geopandas", ], + "3.14": [ + "bqstorage", + "bigframes", + "geopandas", + ], } CURRENT_DIRECTORY = pathlib.Path(__file__).parent.absolute() @@ -208,7 +218,7 @@ 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"): + if protobuf_implementation == "cpp" and session.python in ("3.11", "3.12", "3.13", "3.14"): session.skip("cpp implementation is not supported in python 3.11+") constraints_path = str( From c6d9c0fe14af464bcfa588b5d41fd8dcb03ba4f2 Mon Sep 17 00:00:00 2001 From: Linchin Date: Mon, 15 Dec 2025 22:07:59 +0000 Subject: [PATCH 7/8] lint --- noxfile.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/noxfile.py b/noxfile.py index 029f671..6a400a3 100644 --- a/noxfile.py +++ b/noxfile.py @@ -218,7 +218,12 @@ 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", "3.14"): + if protobuf_implementation == "cpp" and session.python in ( + "3.11", + "3.12", + "3.13", + "3.14", + ): session.skip("cpp implementation is not supported in python 3.11+") constraints_path = str( From cc8e846ce75b499af21f485976b8d86bc15ac4d2 Mon Sep 17 00:00:00 2001 From: Linchin Date: Mon, 15 Dec 2025 22:12:13 +0000 Subject: [PATCH 8/8] clean up --- testing/constraints-3.14.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/testing/constraints-3.14.txt b/testing/constraints-3.14.txt index a2b219c..e69de29 100644 --- a/testing/constraints-3.14.txt +++ b/testing/constraints-3.14.txt @@ -1,2 +0,0 @@ -# IMPORTANT: When Python 3.12 support is dropped, update these to -# match the minimums in setup.py.