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 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" +} diff --git a/noxfile.py b/noxfile.py index 4c5dbd6..6a400a3 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", @@ -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,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"): + 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( diff --git a/setup.py b/setup.py index 5fb9599..4bd317a 100644 --- a/setup.py +++ b/setup.py @@ -52,7 +52,8 @@ # 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"], "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", ], diff --git a/testing/constraints-3.14.txt b/testing/constraints-3.14.txt new file mode 100644 index 0000000..e69de29