GitHub user aglinxinyuan created a discussion: Proposal: Drop Python 3.10 support
## Motivation Python 3.10 reaches **end of life in October 2026** — it's already in security-only status per the [Python devguide version table](https://devguide.python.org/versions/) (`3.10 → EOL 2026-10`). Meanwhile the scientific-Python ecosystem retires old interpreters aggressively (NEP 29 / SPEC 0), and our `pyamber` CI matrix still pins **3.10** as its floor: ```yaml # .github/workflows/build.yml python-version: ["3.10", "3.11", "3.12", "3.13"] ``` That floor is now actively blocking routine dependency updates. The trigger for this proposal is **#6231**: Dependabot bumped `numpy` 2.1.0 → 2.5.1, but numpy 2.5.x requires **Python ≥ 3.12**, so `uv`/`pip` couldn't resolve on the 3.10 and 3.11 legs and the whole `pyamber` + `amber-integration` set went red: ``` × No solution found when resolving dependencies: ╰─▶ Because the current Python version (3.10.20) does not satisfy Python>=3.12 and numpy==2.5.1 depends on Python>=3.12 … numpy==2.5.1 cannot be used. ``` To get CI green I had to cap the bump at **numpy 2.2.6** — the last release that still supports 3.10. numpy's Python floor by release: | numpy | requires-python | | ------------ | --------------- | | ≤ 2.2.x | ≥ 3.10 | | 2.3.x–2.4.x | ≥ 3.11 | | ≥ 2.5.x | ≥ 3.12 | This isn't a one-off — every future numpy / scipy / scikit-learn / pandas bump will keep hitting the same wall as those projects raise their floors, and we'll keep pinning to progressively staler versions (and their unpatched CVEs) just to keep the 3.10 leg alive. ## Proposal Drop **Python 3.10** from the supported set and make **3.11** the new floor (matrix → `3.11, 3.12, 3.13`). 3.10 is the version aging out (EOL 2026-10). 3.11 is supported until 2027-10, so it's a safe new floor. ### What changes | File | Change | | ---- | ------ | | `.github/workflows/build.yml` (pyamber matrix) | `["3.10","3.11","3.12","3.13"]` → `["3.11","3.12","3.13"]` | | `amber/pyproject.toml` | Ruff `target-version = "py310"` → `"py311"` | | `bin/pylsp/Dockerfile` | `FROM python:3.10-slim` → `python:3.11-slim` | | `docs/contribution-guidelines/guide-for-developers.md` | drop 3.10 from the install instructions | | `docs/tutorials/guide-to-enable-llm-agent.md` | `Python 3.10+` → `Python 3.11+` | ### What it unblocks A 3.11 floor lifts our numpy ceiling from **2.2.x → 2.4.x** and clears the same friction for the rest of the scientific stack. > Note: reaching numpy **2.5+** would additionally require dropping **3.11** > (numpy 2.5 needs ≥ 3.12). But 3.11 isn't EOL until Oct 2027, so that's a > separate, later step — this proposal is only about retiring 3.10. ## Alternatives - **Status quo** — stay on 3.10 and keep capping every scientific dependency to its last 3.10-compatible release. Low effort per PR, but the debt compounds and we fall progressively behind on security and performance fixes. - **Drop 3.10 and 3.11 together** — reaches the newest numpy today, but retires an interpreter (3.11) that's still ~1.5 years from EOL and may still be in use downstream. Premature. Feedback welcome — if there's no objection I'll open the PR to trim the matrix and update the docs. GitHub link: https://github.com/apache/texera/discussions/6247 ---- This is an automatically sent email for [email protected]. To unsubscribe, please send an email to: [email protected]
