Uh oh!
There was an error while loading. Please reload this page.
CI: try Python 3.15 release candidate (DRAFT — do not merge until 3.15 GA) - #15105
CI: try Python 3.15 release candidate (DRAFT — do not merge until 3.15 GA)#15105priya-sundaram-dev wants to merge 2 commits into
Conversation
Let's fix those files in this PR to see if we can get our tests to pass. |
priya-sundaram-dev
commented
Aug 28, 2026
I dug into this one and I don't think the fix lives in those files — here's what I found:
So this is an upstream dependency reaching for Two honest paths, and I'd like your call:
I lean (1) first to get the culprit's name on record (it's likely one shared transitive dep, so a single pin probably clears all 10), then (2) only if the fix isn't out yet. Want me to push the diagnostic import so we can see exactly which package it is? |
Please rebase to resolve the git conflicts. Could |
30f3cfe to
c39032dComparepriya-sundaram-dev
commented
Aug 28, 2026
Rebased onto On the
So swapping httpx wouldn't fix it — the Concretely: bump the floor to |
—> from typing import Selfhttps://docs.python.org/3/library/typing.html#typing.Self was added in Python 3.11. We should have not been ignoring Are we using the most current version of bs4? |
priya-sundaram-dev
commented
Aug 28, 2026
Good catches on both — the real fix isn't a bigger
bs4 — no, we're a bit behind. After #15113 lands the only remaining 3.15 import break should be |
Uh oh!
There was an error while loading. Please reload this page.
priya-sundaram-dev
commented
Aug 29, 2026
Root cause of the red Test collection dies importing
So the fix is to move the locked One caveat worth flagging before I push anything: the branch's
Given this is the RC-gating draft, my inclination is (1) here to get the build green, and open (2) separately. Let me know and I'll push. |
cclauss
commented
Aug 29, 2026
Please create a separate pr that only upgrades |
cclauss
commented
Aug 29, 2026
Sorry. Our last two notes were sent at the same time so ignore mine. Let’s try your minimal approach. we are going to need to fix algorithms keeper so it allows prs to change should we consider gitignoring |
priya-sundaram-dev
commented
Aug 29, 2026
Sounds good — I'll go minimal. The actual one-line fix for the 3.15 build is bumping the transitive On
I'd lean toward the first: it's a ~3-line keeper patch and you keep the lockfile's benefits. If you're fine gitignoring it, that's genuinely simpler and makes the 3.15 problem disappear on its own. Whichever you pick, I'll have the minimal |
cclauss
commented
Aug 29, 2026
Please open the keeper. I agree that would be best path forward. |
priya-sundaram-dev
commented
Aug 29, 2026
Done — opened the keeper PR: TheAlgorithms/algorithms-keeper#228. It adds Once that lands and the keeper picks it up, I'll push the minimal |
cclauss
commented
Aug 30, 2026
The title of this PR says it is on For instance Please make a separate pull request that gets us off |
cclauss
commented
Aug 30, 2026
Please rebase. |
3f0f72f to
4ab4ae9Comparepriya-sundaram-dev
commented
Aug 30, 2026
Done on both counts:
|
Please rebase. We might be blocked by: Which of our algorithms require scikit-learn? |
21dd171 to
de3283cComparepriya-sundaram-dev
commented
Aug 31, 2026
Rebased on latest `master` (resolved the `pyproject.toml` beautifulsoup4 overlap — kept your `>=4.12.3` suggestion). Algorithms that require scikit-learn — all under `machine_learning/`, all module-level `import sklearn ...` (so pytest collection imports them; if the sklearn wheel can't install on 3.15, every one of these fails to collect, not just to run):
So yes, scikit-learn/scikit-learn#34652 (no 3.15 wheels yet) would block `uv sync` and knock out all 13 of these on 3.15 until scikit-learn ships 3.15 wheels — which is exactly why this stays a draft until 3.15 GA. Happy to add a temporary `3.15`-only ignore for `machine_learning/` if you'd rather see the rest of the matrix go green in the meantime. |
cclauss
commented
Aug 31, 2026
The To unblock us, I created: |
de3283c to
46176fdComparepriya-sundaram-dev
commented
Aug 31, 2026
Synced my fork's |
cclauss
commented
Aug 31, 2026
From the GitHub Action error logs:
Based on past CPython upgrades for this repo, if we Please also go back to |
priya-sundaram-dev
commented
Aug 31, 2026
Done on both:
Heads-up on the bigger picture so we set expectations honestly: even with scipy building, scikit-learn also has no cp315 wheels yet and would need a source build too (scikit-learn-release#8), so a full If you want CI signal on 3.15 sooner, I can add a scoped variant that installs only the pure-Python deps and runs the non-scientific test subset (ignoring the numpy/scipy/sklearn/tensorflow dirs), so we get a green 3.15 lane now and drop the ignores once wheels ship. Happy to push that if useful. |
Line 27 in df3a091 --> scipy 1.18.1 |
priya-sundaram-dev
commented
Aug 31, 2026
Good call — scipy 1.18.1 ships The remaining core dep without a |
Point the repo's .python-version at 3.15 so every workflow that reads python-version-file runs on the 3.15 release candidate (allow-prereleases is already enabled across all workflows). Add the 3.15 trove classifier and bump scipy>=1.18.1, which is the first scipy with cp315 manylinux wheels, so uv installs it as a wheel rather than building from source. Rebuilt on current master: the earlier version of this PR edited the per-workflow `python-version: 3.14` lines, but master has since moved the interpreter to a single `.python-version` file, so the change is now a one-line switch there. Purpose is to document which dependencies/tests are not yet 3.15-ready. Must stay DRAFT until Python 3.15 GA (early October). Requested in TheAlgorithms#15081.
72a5d89 to
d3090daComparefor more information, see https://pre-commit.ci
priya-sundaram-dev
commented
Sep 1, 2026
Rebased on current
All the per-workflow |
Part of the maintenance experiments requested in #15081.
What this does
Points the CI workflows at the Python 3.15 release candidate (
python-version: 3.15, withallow-prereleases: true, which was already enabled) and adds theProgramming Language :: Python :: 3.15trove classifier.Status: DRAFT until 3.15 GA
Per the request, this stays in DRAFT until Python 3.15 has a production release (early October) — it should not merge before then.
Intentionally minimal
requires-pythonstays>=3.14(still accurate) and[tool.mypy] python_versionstays3.14for now, so mypy keeps type-checking against the current stable target. Bumping those is a separate decision for after 3.15 GA.cp315wheels and which tests break on the RC. I'll record the specific failures as comments on this PR as CI reports them.