-
Notifications
You must be signed in to change notification settings - Fork 239
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
feat: use python3.11+ for cibuildwheel driver #1912
base: main
Are you sure you want to change the base?
Conversation
4ba37cb
to
1e899ff
Compare
I support this change. There is very little reason to hang on to older Pythons on the host side, when we can benefit from new features. To be clear to anyone coming across this, we're talking about the version of Python that is used to run cibuildwheel. That is distinct from the versions of Python that we build wheels for, which would be unchanged by this. |
60a7a82
to
3dd21fc
Compare
270d925
to
065d64c
Compare
0a491ed
to
020e0fd
Compare
I think it's very logical for a project like cibuildwheel to follow SPEC 0 on the host side. |
0a89e08
to
d45caba
Compare
27021d3
to
2a78743
Compare
Let's get 3.13.0 in, make a patch release, then I think this will be ready to merge? |
I was waiting for 3.13.0 final availability in GHA but maybe we don't care that much about that (or removing the |
Don't necessarily need to remove the allow-prereleases. The only time Python pre-releases is for upcoming Python versions, which you opt-into anyway. Maybe |
(and, 3.13.0 is available AFAICT, it's just not shipped in manifests or runner images yet. But also I'm not talking about merging the instant we release, either ;) ) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
looks good to me
Should we add a warning to cibuildwheel running on Python 3.8-3.10 stating that the host Python needs to be upgraded to keep working with the next version of cibuildwheel? Unlike a normal Python package, you don't want to get silently stuck on an older version of cibuildwheel. |
Yeah, that's a good idea. I just checked and a decent number of projects just write |
5b1c1e9
to
274d985
Compare
264b486
to
77865b0
Compare
b679396
to
7d4134d
Compare
Since you're asking for feedback, count me in as worried about adopting a faster-paced deprecation for a PyPA project, which traditionally focuses on all Python ecosystems, not just the Scientific Python ecosystem, which SPEC 0 was approved for. Would not merging this prevent innovation? Could you share more about the rationale please? |
I wonder if we should avoid mentioning SPEC 0 too much, I’ve been avoiding mentioning it. I believe the idea is that this is a developer tool, and CI and developers tend to be able to get newer versions of Python, so dropping old versions of Python will not affect them too much, and we get big benefits in maintenance. You only need to have Python 3.11 or newer on your CI, and locally if you want to debug wheel production. For producing Python wheels, we do and still will support the widest range of basically any PyPA project except manylinux. Currently 3.6+. Do you have a specific example of a CI service that does not have Python 3.11 or newer? |
72e46a4
to
e1112fe
Compare
To be honest, that might do the trick since it doesn't add much clarity to downstream developers, given
That's the key information that wasn't clear from the PR description above and I worried this would accelerate the deprecation of supported Python versions when building wheel files.
Excellent, thanks for confirming.
No, this is moot now that I better understand the motivation for the change. |
As discussed in various issues, I think that cibuildwheel is in position where it might make sense to follow SPEC 0 schedule rather than the CPython schedule. This would allow to take advantage of new Python features faster (or without/ with less back ports).
The idea is that this is a developer tool, and CI and developers tend to be able to get newer versions of Python, so dropping old versions of Python will not affect them too much, and we get big benefits in maintenance. You only need to have Python 3.11 or newer on your CI, and locally if you want to debug wheel production.
For producing Python wheels, we do and still will support the widest range of basically any PyPA project. Currently 3.6+.
This draft PR is:
The idea would be to switch to SPEC 0 in 2024Q4 after Python 3.8 EOL & Python 3.13 GA, thus dropping 3.8, 3.9 & 3.10.
To be clear to anyone coming across this, we're talking about the version of Python that is used to run cibuildwheel. That is distinct from the versions of Python that we build wheels for, which would be unchanged by this.