diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml deleted file mode 100644 index 53c7479..0000000 --- a/.github/sync-repo-settings.yaml +++ /dev/null @@ -1,39 +0,0 @@ -# https://github.com/googleapis/repo-automation-bots/tree/main/packages/sync-repo-settings -# Rules for main branch protection -branchProtectionRules: -# Identifies the protection rule pattern. Name of the branch to be protected. -# Defaults to `main` -- pattern: main - requiresCodeOwnerReviews: true - requiresStrictStatusChecks: true - requiredStatusCheckContexts: - - 'cla/google' - - 'OwlBot Post Processor' - - 'lint' - - 'Kokoro system-3.9' - - 'Kokoro system-3.11 (noextras)' - - 'Kokoro system-3.13' - - 'docs' - - 'unit (3.9)' - - 'unit (3.12)' - - 'unit (3.13)' - - 'cover' - - 'Samples - Lint' - - 'Samples - Python 3.9' - - 'Samples - Python 3.11' - - 'Samples - Python 3.12' -permissionRules: - - team: actools-python - permission: admin - - team: actools - permission: admin - - team: api-bigquery - permission: push - - team: api-bigquery-dataframe - permission: push - - team: yoshi-python - permission: push - - team: python-samples-owners - permission: push - - team: python-samples-reviewers - permission: push diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 1051da0..3ed755f 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.10" + python-version: "3.14" - 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 2ff94d3..8e6fd55 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 @@ -45,7 +45,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v5 with: - python-version: "3.10" + python-version: "3.14" - name: Install coverage run: | python -m pip install --upgrade setuptools pip wheel diff --git a/.kokoro/continuous/prerelease-deps-3.13.cfg b/.kokoro/continuous/prerelease-deps-3.13.cfg deleted file mode 100644 index 99a1e71..0000000 --- a/.kokoro/continuous/prerelease-deps-3.13.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: "prerelease_deps-3.13" -} diff --git a/.kokoro/continuous/prerelease-deps.cfg b/.kokoro/continuous/prerelease-deps-3.14.cfg similarity index 77% rename from .kokoro/continuous/prerelease-deps.cfg rename to .kokoro/continuous/prerelease-deps-3.14.cfg index 3595fb4..bf3534b 100644 --- a/.kokoro/continuous/prerelease-deps.cfg +++ b/.kokoro/continuous/prerelease-deps-3.14.cfg @@ -3,5 +3,5 @@ # Only run this nox session. env_vars: { key: "NOX_SESSION" - value: "prerelease_deps" + value: "prerelease_deps-3.14" } diff --git a/.kokoro/continuous/prerelease-deps-3.8.cfg b/.kokoro/continuous/prerelease-deps-3.8.cfg deleted file mode 100644 index fabe3e3..0000000 --- a/.kokoro/continuous/prerelease-deps-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: "prerelease_deps-3.8" -} diff --git a/.kokoro/presubmit/prerelease-deps-3.10.cfg b/.kokoro/presubmit/prerelease-deps-3.10.cfg deleted file mode 100644 index 0c6c446..0000000 --- a/.kokoro/presubmit/prerelease-deps-3.10.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: "prerelease_deps-3.10" -} diff --git a/.kokoro/presubmit/prerelease-deps-3.12.cfg b/.kokoro/presubmit/prerelease-deps-3.12.cfg deleted file mode 100644 index ece962a..0000000 --- a/.kokoro/presubmit/prerelease-deps-3.12.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: "prerelease_deps-3.12" -} diff --git a/.kokoro/presubmit/prerelease-deps-3.13.cfg b/.kokoro/presubmit/prerelease-deps-3.13.cfg deleted file mode 100644 index 99a1e71..0000000 --- a/.kokoro/presubmit/prerelease-deps-3.13.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: "prerelease_deps-3.13" -} diff --git a/.kokoro/continuous/prerelease-deps-3.11.cfg b/.kokoro/presubmit/prerelease-deps-3.14.cfg similarity index 77% rename from .kokoro/continuous/prerelease-deps-3.11.cfg rename to .kokoro/presubmit/prerelease-deps-3.14.cfg index 1e19f12..bf3534b 100644 --- a/.kokoro/continuous/prerelease-deps-3.11.cfg +++ b/.kokoro/presubmit/prerelease-deps-3.14.cfg @@ -3,5 +3,5 @@ # Only run this nox session. env_vars: { key: "NOX_SESSION" - value: "prerelease_deps-3.11" + value: "prerelease_deps-3.14" } diff --git a/.kokoro/presubmit/prerelease-deps-3.9.cfg b/.kokoro/presubmit/prerelease-deps-3.9.cfg deleted file mode 100644 index 48d07dd..0000000 --- a/.kokoro/presubmit/prerelease-deps-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: "prerelease_deps-3.9" -} diff --git a/.kokoro/presubmit/prerelease-deps.cfg b/.kokoro/presubmit/prerelease-deps.cfg deleted file mode 100644 index 3595fb4..0000000 --- a/.kokoro/presubmit/prerelease-deps.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: "prerelease_deps" -} diff --git a/.kokoro/presubmit/system-3.10.cfg b/.kokoro/presubmit/system-3.10.cfg deleted file mode 100644 index f1c7c56..0000000 --- a/.kokoro/presubmit/system-3.10.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.10" -} \ No newline at end of file diff --git a/.kokoro/presubmit/system-3.13.cfg b/.kokoro/presubmit/system-3.13.cfg deleted file mode 100644 index f66fd95..0000000 --- a/.kokoro/presubmit/system-3.13.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.13" -} diff --git a/.kokoro/presubmit/system-3.12.cfg b/.kokoro/presubmit/system-3.14.cfg similarity index 82% rename from .kokoro/presubmit/system-3.12.cfg rename to .kokoro/presubmit/system-3.14.cfg index 789455b..7390414 100644 --- a/.kokoro/presubmit/system-3.12.cfg +++ b/.kokoro/presubmit/system-3.14.cfg @@ -3,5 +3,5 @@ # Only run this nox session. env_vars: { key: "NOX_SESSION" - value: "system-3.12" + value: "system-3.14" } diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 40bdd5d..3182cf5 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.11, 3.12 and 3.13 on both UNIX and Windows. + 3.9, 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:: @@ -143,12 +143,12 @@ Running System Tests $ nox -s system # Run a single system test - $ nox -s system-3.13 -- -k + $ nox -s system-3.14 -- -k .. note:: - System tests are only configured to run under Python 3.9, 3.11, 3.12 and 3.13. + System tests are only configured to run under Python 3.9, 3.11, 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 @@ -225,11 +225,13 @@ We support: - `Python 3.11`_ - `Python 3.12`_ - `Python 3.13`_ +- `Python 3.14`_ .. _Python 3.9: https://docs.python.org/3.9/ .. _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`_. diff --git a/noxfile.py b/noxfile.py index 4c5dbd6..9b62dc0 100644 --- a/noxfile.py +++ b/noxfile.py @@ -32,9 +32,9 @@ ISORT_VERSION = "isort==5.11.0" LINT_PATHS = ["docs", "bigquery_magics", "tests", "noxfile.py", "setup.py"] -DEFAULT_PYTHON_VERSION = "3.10" +DEFAULT_PYTHON_VERSION = "3.14" -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() @@ -168,7 +178,7 @@ def format(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("docutils", "pygments", "setuptools") session.run("python", "setup.py", "check", "--restructuredtext", "--strict") @@ -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( @@ -408,7 +423,7 @@ def docfx(session): ) -@nox.session(python="3.13") +@nox.session(python=DEFAULT_PYTHON_VERSION) @nox.parametrize( "protobuf_implementation", ["python", "upb", "cpp"], @@ -416,7 +431,12 @@ 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"): + 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+") # Install all dependencies diff --git a/owlbot.py b/owlbot.py index 54aa282..150e845 100644 --- a/owlbot.py +++ b/owlbot.py @@ -38,10 +38,11 @@ "3.11": [], "3.12": extras_storage + extras_spanner, "3.13": extras_bf, + "3.14": extras_bf, } templated_files = common.py_library( - unit_test_python_versions=["3.9", "3.11", "3.12", "3.13"], - system_test_python_versions=["3.9", "3.11", "3.12", "3.13"], + unit_test_python_versions=["3.9", "3.11", "3.12", "3.13", "3.14"], + system_test_python_versions=["3.9", "3.11", "3.12", "3.13", "3.14"], cov_level=100, unit_test_extras_by_python=extras_by_python, unit_test_external_dependencies=["google-cloud-testutils"], @@ -50,7 +51,7 @@ "pandas": "https://pandas.pydata.org/pandas-docs/stable/", "pydata-google-auth": "https://pydata-google-auth.readthedocs.io/en/latest/", }, - default_python_version="3.10", + default_python_version="3.14", ) s.move( templated_files, diff --git a/setup.py b/setup.py index 5fb9599..570e6c1 100644 --- a/setup.py +++ b/setup.py @@ -36,6 +36,8 @@ "packaging >= 20.0.0", "pandas>=1.2.0", "pyarrow >= 3.0.0", + # See https://arrow.apache.org/release/22.0.0.html + "pyarrow >= 22.0.0; python_version >= '3.14'", "pydata-google-auth >=1.5.0", "tqdm >= 4.7.4, <5.0.0", ] @@ -110,6 +112,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