Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Support pre-release python versions for python-build-standalone toolchains #2837

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
rickeylev opened this issue Apr 28, 2025 · 3 comments
Open
Labels
type: toolchain Related to the toolchains provided by rules_python

Comments

@rickeylev
Copy link
Collaborator

Jax (among others) likes to use Python runtimes from python-build-standalone that are pre-release versions to help verify upcoming behavior and try out new Python features. e.g. right now, they carry a patch to map 3.14 to 3.14.0a6.

The underlying versions.bzl file doesn't support pre-release versions, though, so they patch 3.14.0 to point to a 3.14.0a6 URL. This works, but it's a bit misleading. It's also problematic if one wanted to have configuration for two versions at once, differentiated by their pre-release version.

(Using patches isn't ideal, but I think they're using an older version that doesn't yet have the TOOL_VERSIONS arg/override -- regardless, the same issues are present).

While #2081 would also address this, I figured a more specific feature request is warranted (this is more narrowly scoped and well defined than 2081).

In any case, the desired outcome should be:

  • A user can set --python_version=3.14.0.a6 on the command line, and have the appropriate runtime used
  • A user can have more than one pre-release configured in e.g. TOOL_VERSIONS

This should be fairly easy to implement and test:

  • Use py_reconfig_test to set the python_version and customize toolchains
  • Have the test assert sys.version
  • Start fixing the errors and misbehaviors that ensue.

cc @kanglant

@aignas
Copy link
Collaborator

aignas commented Apr 29, 2025

Can we limit this support only to bzlmod or do we need to support WORKSPACE as well?

@aignas aignas added the type: toolchain Related to the toolchains provided by rules_python label Apr 29, 2025
@rickeylev
Copy link
Collaborator Author

It can definitely start with bzlmod.

After skimming the code, also adding workspace may not be that hard -- when py_freethreaded got added, the TOOL_VERSIONS structs have some extra fields to carry more arbitrary config settings. So there's a least a place to put those right now. Users might actually be able to set those themselves via python_register_toolchains ?

pypi integration is the other big half. I don't think that handles below minor versions? That part might have to wait until deps-selection is moved to analysis phase. And possibly sdist building is moved to build phase. Not sure.

@aignas
Copy link
Collaborator

aignas commented Apr 29, 2025

PyPI integration now handles the full version (X.Y.Z, but supporting rc versions might be doable, we should just get it from the interpreter itself).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type: toolchain Related to the toolchains provided by rules_python
Projects
None yet
Development

No branches or pull requests

2 participants