-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Declare Python 3.14 support #13506
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
Declare Python 3.14 support #13506
Conversation
Oh urgh, Windows CI is failing on Python 3.14. I understand that at least some of these failures are going to be fixed with #13496. I guess #13501 really is necessary to properly support Python 3.14. Great. cc @barneygale |
I'm very happy to go through those patches line-by-line and answer any questions you might have! Let me know if I can help some other way. |
OK, with #13496 merged, let's see what failures are left. AFAIU, they're going to be related with the URL/filepath handling in the collector (and possibly requirement parser?) which makes me uneasy. Changing the tests is one thing, but changing actual pip logic is dicier. |
OK, there are four failures left:
I'm not comfortable with including the entirety of PR #13501 given I am barely a URL/filepath expert, but I don't understand why these tests are failing in the first place. I think you looked at these failures @barneygale. Are these tests simply wrong or is the pip logic itself broken? If the tests themselves are broken, then I'd prefer including a test-only fix or just skipping the tests on 3.14 (and reenable them once we get everything sorted out after the release crunch). |
Both, unfortunately. The |
Actually, I think the |
The Ubuntu failures in |
Seems like some underlying change in multiprocessing or some related module in Python 3.14 now means our test suite uses unix sockets. We have a pytest plugin installed that blocks sockets by default to avoid mistakenly adding tests that rely on the Internet. Local unix sockets are totally fine, of course. I've added them to the allowlist. |
I fixed the I marked |
6caad55
to
03f3d19
Compare
Seems like some underlying change in multiprocessing or some related module in Python 3.14 now means our test suite uses unix sockets. We have a pytest plugin installed that blocks sockets by default to avoid mistakenly adding tests that rely on the Internet. Local unix sockets are totally fine, of course. I've added them to the allowlist.
what a 🔥 🗑️ argh! I'm pretty confident that there are more broken unit tests ( |
Fixed the test_unsupported_hashes and test_install_editable_with_wrong_egg_name tests to use pip's own path -> URL function instead of simply adding file:// which results in the malformed file://C:/. This will be handled gracefully in the next 3.14 release (as a matter of backwards compatibility) but the test suite shouldn't be relying on such behaviour anyway. Marked test_build_deps_use_proxy_from_cli as a xfail on Python 3.14+ because it seems to be an intermittent issue with proxy.py or something else with our test suite. I can only reproduce the failure locally if I run the test suite with two workers 🙃. Given it doesn't seem to be a problem with pip itself, I'm prioritizing getting 25.2 released on time than doing a full proper investigation into what's wrong.
🎉 thank you very much @barneygale for all of your help! There is more work to be done, but we can relax for a few days as I cut the release on the 30th. |
🤞 CI passes