Skip to content

Conversation

@chalmerlowe
Copy link

@chalmerlowe chalmerlowe commented Oct 24, 2025

This PR adds support for Python 3.14 to the library.

Key changes include:

  • Update to .github/workflows files to account for Python runtimes both 3.14 and 3.8.
    • Adding Python 3.14 to the test matrix in .github/workflows/unittest.yml, etc.
  • Updating .github/sync-repo-settings.yaml to include 3.14 unit tests in required checks.
  • Update to .kokoro/presubmit files to update the system test and presubmit.cfg
  • Adding testing/constraints-3.14.txt.
  • Updates CONTRIBUTING.rst to list Python 3.14 as a supported version.
  • Updates mypy.ini to suppress several known type hinting errors in two files.
  • Updating noxfile.py to include 3.14 sessions.
  • Updates to owlbot.py to include Python 3.14.
  • Updating setup.py to include the Python 3.14 classifier and add conditional dependencies for grpcio.
@chalmerlowe chalmerlowe requested review from a team as code owners October 24, 2025 16:44
@product-auto-label product-auto-label bot added size: xs Pull request size is extra small. api: datastore Issues related to the googleapis/python-datastore API. labels Oct 24, 2025
@product-auto-label product-auto-label bot added size: s Pull request size is small. and removed size: xs Pull request size is extra small. labels Oct 24, 2025
@chalmerlowe chalmerlowe requested a review from a team as a code owner October 27, 2025 15:28
@chalmerlowe chalmerlowe requested a review from dandhlee October 27, 2025 15:28
@chalmerlowe chalmerlowe added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Oct 27, 2025
@yoshi-kokoro yoshi-kokoro removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Oct 27, 2025
@chalmerlowe chalmerlowe added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Oct 27, 2025
@yoshi-kokoro yoshi-kokoro removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Oct 27, 2025
@chalmerlowe chalmerlowe added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Oct 28, 2025
@yoshi-kokoro yoshi-kokoro removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Oct 28, 2025
@product-auto-label product-auto-label bot added size: m Pull request size is medium. and removed size: s Pull request size is small. labels Oct 29, 2025
env_vars: {
key: "NOX_SESSION"
value: "system-3.8"
value: "system-3.12"
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
value: "system-3.12"
value: "system-3.14"
Comment on lines +9 to +13
[mypy-google.cloud.datastore_v1.services.datastore.async_client]
ignore_errors = True

[mypy-google.cloud.datastore_v1.services.datastore.client]
ignore_errors = True
Copy link
Contributor

Choose a reason for hiding this comment

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

Can we pin mypy instead of ignoring the errors, with a bug to follow up on removing the pin for mypy?

Copy link

Choose a reason for hiding this comment

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

Either / or should be fine? I see that firestore is also ignoring error. Both workarounds require us to fix the issue upsteam.

Copy link
Contributor

Choose a reason for hiding this comment

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

Ack. We will need a bug to follow up on removing this code in mypy.ini


# Ensure Python 3.14 is in the skip list for cpp proto implementation
s.replace(
"noxfile.py",
Copy link
Contributor

Choose a reason for hiding this comment

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

Is this needed? noxfile.py is no longer part of synthtool templates

s.replace(
".github/workflows/mypy.yml",
r'''python-version: "3.8"''',
'''python-version: "3.10"''',
Copy link
Contributor

Choose a reason for hiding this comment

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

return ga_credentials_async.AnonymousCredentials()
return ga_credentials.AnonymousCredentials()
else: # pragma: NO COVER
return ga_credentials.AnonymousCredentials()
Copy link
Contributor

Choose a reason for hiding this comment

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

api: datastore Issues related to the googleapis/python-datastore API. size: m Pull request size is medium.

6 participants