Skip to content
This repository was archived by the owner on Mar 6, 2026. It is now read-only.

Commit c400aa8

Browse files
Merge branch 'main' into main
2 parents 8905647 + ec71943 commit c400aa8

File tree

10 files changed

+81
-24
lines changed

10 files changed

+81
-24
lines changed

.github/.OwlBot.lock.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,5 @@
1313
# limitations under the License.
1414
docker:
1515
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
16-
digest: sha256:5581906b957284864632cde4e9c51d1cc66b0094990b27e689132fe5cd036046
17-
# created: 2025-03-05
16+
digest: sha256:4a9e5d44b98e8672e2037ee22bc6b4f8e844a2d75fcb78ea8a4b38510112abc6
17+
# created: 2025-10-07

.github/workflows/lint.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
- name: Setup Python
1313
uses: actions/setup-python@v5
1414
with:
15-
python-version: "3.8"
15+
python-version: "3.13"
1616
- name: Install nox
1717
run: |
1818
python -m pip install --upgrade setuptools pip wheel

.github/workflows/unittest.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
runs-on: ubuntu-22.04
1212
strategy:
1313
matrix:
14-
python: ['3.8', '3.9', '3.10', '3.11', '3.12']
14+
python: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13', '3.14']
1515
steps:
1616
- name: Checkout
1717
uses: actions/checkout@v4
@@ -45,7 +45,7 @@ jobs:
4545
- name: Setup Python
4646
uses: actions/setup-python@v5
4747
with:
48-
python-version: "3.8"
48+
python-version: "3.13"
4949
- name: Install coverage
5050
run: |
5151
python -m pip install --upgrade setuptools pip wheel

CONTRIBUTING.rst

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ In order to add a feature:
2222
documentation.
2323

2424
- The feature must work fully on the following CPython versions:
25-
3.8, 3.9, 3.10, 3.11 and 3.12 on both UNIX and Windows.
25+
3.8, 3.9, 3.10, 3.11, 3.12, 3.13 and 3.14 on both UNIX and Windows.
2626

2727
- The feature must not add unnecessary dependencies (where
2828
"unnecessary" is of course subjective, but new dependencies should
@@ -72,7 +72,7 @@ We use `nox <https://nox.readthedocs.io/en/latest/>`__ to instrument our tests.
7272

7373
- To run a single unit test::
7474

75-
$ nox -s unit-3.12 -- -k <name of test>
75+
$ nox -s unit-3.14 -- -k <name of test>
7676

7777

7878
.. note::
@@ -143,12 +143,12 @@ Running System Tests
143143
$ nox -s system
144144

145145
# Run a single system test
146-
$ nox -s system-3.12 -- -k <name of test>
146+
$ nox -s system-3.14 -- -k <name of test>
147147

148148

149149
.. note::
150150

151-
System tests are only configured to run under Python 3.8, 3.9, 3.10, 3.11 and 3.12.
151+
System tests are only configured to run under Python 3.9 and 3.14.
152152
For expediency, we do not run them in older versions of Python 3.
153153

154154
This alone will not run the tests. You'll need to change some local
@@ -226,12 +226,16 @@ We support:
226226
- `Python 3.10`_
227227
- `Python 3.11`_
228228
- `Python 3.12`_
229+
- `Python 3.13`_
230+
- `Python 3.14`_
229231

230232
.. _Python 3.8: https://docs.python.org/3.8/
231233
.. _Python 3.9: https://docs.python.org/3.9/
232234
.. _Python 3.10: https://docs.python.org/3.10/
233235
.. _Python 3.11: https://docs.python.org/3.11/
234236
.. _Python 3.12: https://docs.python.org/3.12/
237+
.. _Python 3.13: https://docs.python.org/3.13/
238+
.. _Python 3.14: https://docs.python.org/3.14/
235239

236240

237241
Supported versions can be found in our ``noxfile.py`` `config`_.

noxfile.py

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,17 @@
3232
ISORT_VERSION = "isort==5.11.0"
3333
LINT_PATHS = ["docs", "google", "tests", "noxfile.py", "setup.py"]
3434

35-
DEFAULT_PYTHON_VERSION = "3.8"
36-
37-
UNIT_TEST_PYTHON_VERSIONS: List[str] = ["3.8", "3.9", "3.10", "3.11", "3.12"]
35+
DEFAULT_PYTHON_VERSION = "3.13"
36+
37+
UNIT_TEST_PYTHON_VERSIONS: List[str] = [
38+
"3.8",
39+
"3.9",
40+
"3.10",
41+
"3.11",
42+
"3.12",
43+
"3.13",
44+
"3.14",
45+
]
3846
UNIT_TEST_STANDARD_DEPENDENCIES = [
3947
"mock",
4048
"asyncmock",
@@ -48,7 +56,7 @@
4856
UNIT_TEST_EXTRAS: List[str] = []
4957
UNIT_TEST_EXTRAS_BY_PYTHON: Dict[str, List[str]] = {}
5058

51-
SYSTEM_TEST_PYTHON_VERSIONS: List[str] = ["3.8", "3.9", "3.10", "3.11", "3.12"]
59+
SYSTEM_TEST_PYTHON_VERSIONS: List[str] = ["3.9", "3.14"]
5260
SYSTEM_TEST_STANDARD_DEPENDENCIES: List[str] = [
5361
"mock",
5462
"pytest",
@@ -63,7 +71,12 @@
6371
CURRENT_DIRECTORY = pathlib.Path(__file__).parent.absolute()
6472

6573
nox.options.sessions = [
66-
"unit",
74+
"unit-3.9",
75+
"unit-3.10",
76+
"unit-3.11",
77+
"unit-3.12",
78+
"unit-3.13",
79+
"unit-3.14",
6780
"system",
6881
"cover",
6982
"lint",
@@ -127,7 +140,7 @@ def format(session):
127140
@nox.session(python=DEFAULT_PYTHON_VERSION)
128141
def lint_setup_py(session):
129142
"""Verify that setup.py is valid (including RST check)."""
130-
session.install("docutils", "pygments")
143+
session.install("docutils", "pygments", "setuptools")
131144
session.run("python", "setup.py", "check", "--restructuredtext", "--strict")
132145

133146

@@ -167,7 +180,12 @@ def install_unittest_dependencies(session, *constraints):
167180
def unit(session, protobuf_implementation):
168181
# Install all test dependencies, then install this package in-place.
169182

170-
if protobuf_implementation == "cpp" and session.python in ("3.11", "3.12", "3.13"):
183+
if protobuf_implementation == "cpp" and session.python in (
184+
"3.11",
185+
"3.12",
186+
"3.13",
187+
"3.14",
188+
):
171189
session.skip("cpp implementation is not supported in python 3.11+")
172190

173191
constraints_path = str(
@@ -367,15 +385,20 @@ def docfx(session):
367385
)
368386

369387

370-
@nox.session(python="3.12")
388+
@nox.session(python="3.14")
371389
@nox.parametrize(
372390
"protobuf_implementation",
373391
["python", "upb", "cpp"],
374392
)
375393
def prerelease_deps(session, protobuf_implementation):
376394
"""Run all tests with prerelease versions of dependencies installed."""
377395

378-
if protobuf_implementation == "cpp" and session.python in ("3.11", "3.12", "3.13"):
396+
if protobuf_implementation == "cpp" and session.python in (
397+
"3.11",
398+
"3.12",
399+
"3.13",
400+
"3.14",
401+
):
379402
session.skip("cpp implementation is not supported in python 3.11+")
380403

381404
# Install all dependencies

owlbot.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,9 @@
2727
# Add templated files
2828
# ----------------------------------------------------------------------------
2929
templated_files = common.py_library(
30-
unit_test_python_versions=["3.8", "3.9", "3.10", "3.11", "3.12"],
31-
system_test_python_versions=["3.8", "3.9", "3.10", "3.11", "3.12"],
30+
unit_test_python_versions=["3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"],
31+
system_test_python_versions=["3.9", "3.14"],
32+
default_python_version="3.13",
3233
cov_level=99,
3334
intersphinx_dependencies={
3435
"pandas": "https://pandas.pydata.org/pandas-docs/stable/"

pytest.ini

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,5 @@ filterwarnings =
1515
ignore:.*pkg_resources is deprecated as an API:DeprecationWarning
1616
# Remove once the minimum supported Python runtime of this library is Python 3.9
1717
ignore:The python-bigquery library will stop supporting Python 3.7 and Python 3.8:PendingDeprecationWarning
18+
# This error is expected for python versions that approach EOL
19+
ignore:.*Please upgrade to the latest Python version.*:FutureWarning

setup.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
install_requires=(
5656
"google-api-core>=2.15.0, <3.0.0",
5757
"pandas[performance,gcp]>=2.0.0, <3.0.0",
58-
"pyarrow>=15.0.0, <16.0.0",
58+
"pyarrow>=15.0.0, <23.0.0",
5959
"tabulate>=0.9.0, <1.0.0",
6060
"proto-plus>=1.22.3, <2.0.0",
6161
"proto-plus >= 1.25.0, <2.0.0; python_version>='3.13'",
@@ -64,11 +64,11 @@
6464
"google-cloud-documentai>=2.29.2, <4.0.0",
6565
"google-cloud-storage>=1.31.0, <4.0.0",
6666
"google-cloud-vision>=2.7.0, <4.0.0",
67-
"numpy>=1.23.5, <2.0.0",
67+
"numpy>=1.23.5, <3.0.0",
6868
"intervaltree>=3.0.0",
69-
"pikepdf>=8.0.0, <9.0.0",
69+
"pikepdf>=8.0.0, <11.0.0",
7070
"immutabledict>=2.0.0, <5.0.0",
71-
"Pillow>=10.0.0, <11.0.0",
71+
"Pillow>=10.0.0, <12.0.0",
7272
"Jinja2>=3.1.0, <4.0.0",
7373
),
7474
python_requires=">=3.8",
@@ -81,6 +81,8 @@
8181
"Programming Language :: Python :: 3.10",
8282
"Programming Language :: Python :: 3.11",
8383
"Programming Language :: Python :: 3.12",
84+
"Programming Language :: Python :: 3.13",
85+
"Programming Language :: Python :: 3.14",
8486
"Topic :: Internet",
8587
"Topic :: Software Development :: Libraries :: Python Modules",
8688
],

testing/constraints-3.13.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# -*- coding: utf-8 -*-
2+
# This constraints file is required for unit tests.
3+
# List all library dependencies and extras in this file.
4+
google-api-core
5+
pandas
6+
proto-plus
7+
grpc-google-iam-v1
8+
google-cloud-bigquery
9+
google-cloud-documentai
10+
google-cloud-storage
11+
numpy
12+
pikepdf

testing/constraints-3.14.txt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# -*- coding: utf-8 -*-
2+
# This constraints file is required for unit tests.
3+
# List all library dependencies and extras in this file.
4+
google-api-core
5+
pandas
6+
proto-plus
7+
grpc-google-iam-v1
8+
google-cloud-bigquery
9+
google-cloud-documentai
10+
google-cloud-storage
11+
numpy
12+
pikepdf
13+
numba>=0.63.0b1

0 commit comments

Comments
 (0)