Skip to content

Commit 2af5301

Browse files
feat: Add Python 3.13 runtime support
This commit introduces support for Python 3.13 as a runtime dependency. The following changes were made: - Updated `noxfile.py` to include Python 3.13 in unit and system test configurations, including necessary extras and confirming skip conditions for cpp protobuf implementation. - Modified `setup.py` to update `python_requires` to include Python 3.13 (i.e., `<3.14`) and added the corresponding classifier. - Updated `owlbot.py` to include Python 3.13 in the `unit_test_python_versions`, `system_test_python_versions`, and `extras_by_python` configurations. - Created `testing/constraints-3.13.txt` by copying constraints from the 3.12 version. - Updated `README.rst` and `docs/README.rst` to list Python 3.13 as a supported version.
1 parent f363b87 commit 2af5301

File tree

5 files changed

+21
-21
lines changed

5 files changed

+21
-21
lines changed

README.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ dependencies.
5151

5252
Supported Python Versions
5353
^^^^^^^^^^^^^^^^^^^^^^^^^
54-
Python >= 3.8
54+
Python >= 3.8, <3.14
5555

5656
Unsupported Python Versions
5757
^^^^^^^^^^^^^^^^^^^^^^^^^^^

noxfile.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141

4242
DEFAULT_PYTHON_VERSION = "3.8"
4343

44-
UNIT_TEST_PYTHON_VERSIONS: List[str] = ["3.8", "3.9", "3.10", "3.11", "3.12"]
44+
UNIT_TEST_PYTHON_VERSIONS: List[str] = ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
4545
UNIT_TEST_STANDARD_DEPENDENCIES = [
4646
"mock",
4747
"asyncmock",
@@ -71,9 +71,14 @@
7171
"geography",
7272
"bqstorage",
7373
],
74+
"3.13": [
75+
"tests",
76+
"geography",
77+
"bqstorage",
78+
],
7479
}
7580

76-
SYSTEM_TEST_PYTHON_VERSIONS: List[str] = ["3.8", "3.11", "3.12"]
81+
SYSTEM_TEST_PYTHON_VERSIONS: List[str] = ["3.8", "3.11", "3.12", "3.13"]
7782
SYSTEM_TEST_STANDARD_DEPENDENCIES: List[str] = [
7883
"mock",
7984
"pytest",
@@ -101,6 +106,11 @@
101106
"geography",
102107
"bqstorage",
103108
],
109+
"3.13": [
110+
"tests",
111+
"geography",
112+
"bqstorage",
113+
],
104114
}
105115

106116
CURRENT_DIRECTORY = pathlib.Path(__file__).parent.absolute()
@@ -219,7 +229,7 @@ def unit(session, protobuf_implementation, install_extras=True):
219229
)
220230
install_unittest_dependencies(session, "-c", constraints_path)
221231

222-
if install_extras and session.python in ["3.11", "3.12"]:
232+
if install_extras and session.python in ["3.11", "3.12", "3.13"]:
223233
install_target = ".[geography,alembic,tests,bqstorage]"
224234
elif install_extras:
225235
install_target = ".[all]"
@@ -395,7 +405,7 @@ def compliance(session):
395405
)
396406
if session.python == "3.8":
397407
extras = "[tests,alembic]"
398-
elif session.python in ["3.11", "3.12"]:
408+
elif session.python in ["3.11", "3.12", "3.13"]:
399409
extras = "[tests,geography]"
400410
else:
401411
extras = "[tests]"

owlbot.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,11 @@
3333
"3.8": ["tests", "alembic", "bqstorage"],
3434
"3.11": ["tests", "geography", "bqstorage"],
3535
"3.12": ["tests", "geography", "bqstorage"],
36+
"3.13": ["tests", "geography", "bqstorage"],
3637
}
3738
templated_files = common.py_library(
38-
unit_test_python_versions=["3.8", "3.9", "3.10", "3.11", "3.12"],
39-
system_test_python_versions=["3.8", "3.11", "3.12"],
39+
unit_test_python_versions=["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"],
40+
system_test_python_versions=["3.8", "3.11", "3.12", "3.13"],
4041
cov_level=100,
4142
unit_test_extras=extras,
4243
unit_test_extras_by_python=extras_by_python,

setup.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ def readme():
104104
"Programming Language :: Python :: 3.10",
105105
"Programming Language :: Python :: 3.11",
106106
"Programming Language :: Python :: 3.12",
107+
"Programming Language :: Python :: 3.13",
107108
"Operating System :: OS Independent",
108109
"Topic :: Database :: Front-Ends",
109110
],
@@ -119,7 +120,7 @@ def readme():
119120
"sqlalchemy>=1.4.16,<3.0.0",
120121
],
121122
extras_require=extras,
122-
python_requires=">=3.8, <3.13",
123+
python_requires=">=3.8, <3.14",
123124
tests_require=["packaging", "pytz"],
124125
entry_points={
125126
"sqlalchemy.dialects": ["bigquery = sqlalchemy_bigquery:BigQueryDialect"]

testing/constraints-3.13.txt

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1 @@
1-
# This constraints file is used to check that lower bounds
2-
# are correct in setup.py
3-
# List all library dependencies and extras in this file.
4-
# Pin the version to the lower bound.
5-
# e.g., if setup.py has "google-cloud-foo >= 1.14.0, < 2.0.0dev",
6-
# Then this file should have google-cloud-foo==1.14.0
7-
google-api-core == 1.31.5
8-
google-auth==1.25.0
9-
google-cloud-bigquery==3.3.6
10-
google-cloud-bigquery-storage == 2.0.0
11-
grpcio == 1.47.0
12-
pyarrow == 3.0.0
13-
sqlalchemy==1.4.16
1+
numpy>=1.23

0 commit comments

Comments
 (0)