diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml
deleted file mode 100644
index 130dd1fe..00000000
--- 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'
- - 'docs'
- - 'lint'
- - 'unit (3.9)'
- - 'unit (3.10)'
- - 'unit (3.11)'
- - 'unit (3.12)'
- - 'unit (3.13)'
- - 'cover'
- - 'Kokoro'
- - 'Samples - Lint'
- - 'Samples - Python 3.9'
- - 'Samples - Python 3.10'
- - 'Samples - Python 3.11'
- - 'Samples - Python 3.12'
- - 'Samples - Python 3.13'
-permissionRules:
- - team: actools-python
- permission: admin
- - team: actools
- permission: admin
- - team: api-bigquery
- 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 1051da0b..3ed755f0 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 7137d0ad..3a22f126 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']
+ python: ['3.9', '3.10', '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/presubmit/system-3.13.cfg b/.kokoro/presubmit/system-3.14.cfg
similarity index 84%
rename from .kokoro/presubmit/system-3.13.cfg
rename to .kokoro/presubmit/system-3.14.cfg
index 3ec53cf9..ac911a3d 100644
--- a/.kokoro/presubmit/system-3.13.cfg
+++ b/.kokoro/presubmit/system-3.14.cfg
@@ -3,5 +3,5 @@
# Only run the following session(s)
env_vars: {
key: "NOX_SESSION"
- value: "system-3.13"
+ value: "system-3.14"
}
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index 2e8e9860..c7d230de 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 and 3.13 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
@@ -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.10, 3.11, 3.12 and 3.13.
+ System tests are only configured to run under Python 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
@@ -226,12 +226,14 @@ 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.10: https://docs.python.org/3.10/
.. _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 e2e9f723..175eddd2 100644
--- a/noxfile.py
+++ b/noxfile.py
@@ -32,9 +32,9 @@
ISORT_VERSION = "isort==5.10.1"
LINT_PATHS = ["docs", "pandas_gbq", "tests", "noxfile.py", "setup.py"]
-DEFAULT_PYTHON_VERSION = "3.10"
+DEFAULT_PYTHON_VERSION = "3.14"
-UNIT_TEST_PYTHON_VERSIONS = ["3.9", "3.10", "3.11", "3.12", "3.13"]
+UNIT_TEST_PYTHON_VERSIONS = ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
UNIT_TEST_STANDARD_DEPENDENCIES = [
"mock",
"asyncmock",
@@ -56,7 +56,7 @@
"3.9": [],
}
-SYSTEM_TEST_PYTHON_VERSIONS = ["3.9", "3.10", "3.11", "3.12", "3.13"]
+SYSTEM_TEST_PYTHON_VERSIONS = ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
SYSTEM_TEST_STANDARD_DEPENDENCIES = [
"mock",
"pytest",
@@ -161,7 +161,7 @@ def format(session):
@_calculate_duration
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")
diff --git a/owlbot.py b/owlbot.py
index cde35a98..fd07d9a8 100644
--- a/owlbot.py
+++ b/owlbot.py
@@ -35,8 +35,8 @@
extras = ["tqdm", "geopandas"]
templated_files = common.py_library(
default_python_version="3.10",
- unit_test_python_versions=["3.9", "3.10", "3.11", "3.12", "3.13"],
- system_test_python_versions=["3.9", "3.10", "3.11", "3.12", "3.13"],
+ unit_test_python_versions=["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"],
+ system_test_python_versions=["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"],
cov_level=96,
unit_test_external_dependencies=["freezegun"],
unit_test_extras=extras,
diff --git a/setup.py b/setup.py
index 893d801b..e2a6fd5e 100644
--- a/setup.py
+++ b/setup.py
@@ -25,7 +25,9 @@
"db-dtypes >=1.0.4,<2.0.0",
"numpy >=1.18.1",
"pandas >=1.1.4",
- "pyarrow >=4.0.0",
+ "pyarrow >= 4.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",
# Note: google-api-core and google-auth are also included via transitive
# dependency on google-cloud-bigquery, but this library also uses them
@@ -90,6 +92,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",
"Topic :: Scientific/Engineering",
diff --git a/testing/constraints-3.14.txt b/testing/constraints-3.14.txt
new file mode 100644
index 00000000..e69de29b