-
Notifications
You must be signed in to change notification settings - Fork 584
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
Support free threaded Python versions like '3.13t' #973
base: main
Are you sure you want to change the base?
Conversation
Python wheels, pyenv, and a number of other tools use 't' in the Python version number to identify free threaded builds. For example, '3.13t', '3.14.0a1', '3.14t-dev'. This PR supports that syntax in `actions/setup-python`, strips the "t", and adds "-freethreading" to the architecture to select the correct Python version. See actions#771
9f0aeed
to
eb2a653
Compare
Meanwhile, if you can't wait, here at https://github.com/nod-ai/shark-ai/actions/workflows/ci_linux_x64_nogil-libshortfin.yml we are using - name: Setup Python
uses: deadsnakes/action@e640ac8743173a67cca4d7d77cd837e514bf98e8 # v3.2.0
with:
python-version: "3.13-dev"
nogil : true |
If anyone needs the functionality in this PR, I'd recommend to use https://github.com/Quansight-Labs/setup-python. That is a fork of this action with the sole purpose of providing the functionality in this PR (free-threading support) until this PR gets merged (see this issue for context). Data point for reviewers: we've exercised this PR quite heavily by now in projects like NumPy and SciPy, on Linux, macOS and Windows (x86-64 and aarch64/arm64), and it's been working smoothly to date. |
Hi @colesbury 👋, Thank you! |
Also noting here that 3.13 and 3.13t currently don't live happily next to each other on Windows: Quansight-Labs#5 (comment) |
Hi @priyagupta108, thank you for reviewing the PR. I've fixed the handling of versions like |
Hi @colesbury 👋, Thank you for making the updates! During our testing of this PR, we've identified a few issues related to free-threaded Python version inputs:
Here is a demo run showcasing prerelease versions, version ranges, and python-version-file input examples. Please ensure that the PR changes support these input syntaxes for free-threaded Python versions. To ensure full compatibility with all supported Python version formats and inputs including python-version-file input, please address these issues and ensure the implementation fully supports semantic versioning (semver) guidelines to handle different version formats correctly. Additionally, update the documentation to provide clarity on the syntax for free-threaded Python versions. Thank you! |
Hi @priyagupta108, thanks for reviewing the PR again.
I've included examples in "advanced-usage.md". Thank you for the demo run. I've modified it and run it with these changes here: |
Hi @priyagupta108, I've made an additional change:
|
Hi @colesbury,
Please feel free to reach out if you need any further clarification or assistance. |
I'd argue that the cache key be should be unique in order to avoid conflicts: I don't want to restore a 3.13t venv on a 3.13 runner or vice versa. Furthermore, for pre-commit related issues, I don't even want to restore a 3.13.0 venv on a 3.13.1 runner (patch updates I get automatically when specifying Solution is to simply use the setup-python output |
@ddelange 👋, Sorry for the confusion and thanks for pointing it out. Yes, the cache key should be unique. I have edited my previous comment. |
Hi @priyagupta108 - I've fixed the cache key conflicts and removed support for notation like "3.14.0a4". |
Python wheels, pyenv, and a number of other tools use 't' in the Python version number to identify free threaded builds. For example, '3.13t', '3.14.0a1', '3.14t-dev'.
This PR supports that syntax in
actions/setup-python
, strips the "t", and adds "-freethreading" to the architecture to select the correct Python version.See #771 and actions/python-versions#319