Skip to content

ci: test on Python 3.14 and add its classifier - #326

Merged
IzaakGough merged 1 commit into
mainfrom
ci/python-3.14
Oct 29, 2026
Merged

IzaakGough merged 1 commit into
mainfrom
ci/python-3.14

Conversation

@IzaakGough

Copy link
Copy Markdown
Contributor

Python 3.14 is a supported Cloud Functions runtime and the test suite already passes on it, but CI only exercises 3.10 and 3.12.

This adds 3.14 to the CI test matrix and the package classifiers, keeping 3.10 and requires-python unchanged.

  • Lock bump: grpcio, grpcio-status, pyyaml, markupsafe, msgpack and google-crc32c move to versions with cp314 wheels, so the 3.14 job does not build grpcio from source.

Verified by running pytest on 3.10, 3.12 and 3.14 locally, plus ruff and mypy on 3.10.

Bumps grpcio, grpcio-status, pyyaml, markupsafe, msgpack and google-crc32c in uv.lock so the 3.14 job installs wheels instead of building from source.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request adds Python 3.14 to the list of supported Python version classifiers in pyproject.toml. The reviewer correctly points out that Python 3.14 is not yet officially released and its classifier is unsupported by PyPI, which will cause package validation or upload failures. It is recommended to remove this classifier.

Comment thread pyproject.toml Resolved
@IzaakGough
IzaakGough marked this pull request as ready for review October 28, 2026 13:09

@ajperel ajperel left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

For my own learning can you explain the uv.lock changes at a high level and why we needed to do them more. I'm not too familiar with python package management.

@IzaakGough

Copy link
Copy Markdown
Contributor Author

@ajperel Thanks for the review!

Yeah so uv.lock is basically package-lock.json, it pins exact versions so everyone installs the same thing.

This PR bumps six packages that contain compiled C code to releases with python 3.14 builds, otherwise the new CI job would have had to compile them from source (slow and flaky to do in CI).

You rarely see this in node because most npm packages are pure js and work on any node version. python packages with C code ship a separate prebuilt binary per OS and python version.

uv.lock has to list all of these binaries which is why the diff is quite large even though we are only bumping 6 packages.

@IzaakGough
IzaakGough merged commit 0b9f59d into main Oct 29, 2026
22 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants