Python 3.15 ships Oct 9 and we cap below it; 3.10 went EOL Oct 1
@dimitri-yatsenko y travaille déjà.
Depuis le 4/10/2026.
Évaluation
Cette issue n'a pas encore été évaluée.
Description
Two Python-version deadlines have arrived, one of them this week. They want different releases.
Python 3.15 lands Friday, 2026-10-09 — and we cap below it
PEP 790 puts 3.15.0 final on 2026-10-09; betas 1 through 4 shipped between May and July. We declare:
requires-python = ">=3.10,<3.15"
From the 9th, pip install datajoint on a fresh 3.15 fails to resolve. Not "installs and misbehaves" — refuses. Anyone whose base image tracks latest, or who upgrades early, hits a hard stop with no workaround but pinning Python back. The conda-forge recipe carries the same bound (python >={{ python_min }},<3.15), so that channel blocks too.
This is the time-sensitive half and it is small.
Python 3.10 reached EOL on 2026-10-01
It is out of support as of three days ago — no further security fixes. We still declare >=3.10, ship the 3.10 classifier, and test 3.10 as the floor of the matrix. 2.3.4 shipped supporting it.
Not urgent, but no longer a default — it is now a choice to keep carrying it.
| cycle | released | EOL |
|---|---|---|
| 3.10 | 2021-10-04 | 2026-10-01 — EOL |
| 3.11 | 2022-10-24 | 2027-10-31 |
| 3.12 | 2023-10-02 | 2028-10-31 |
| 3.13 | 2024-10-07 | 2029-10-31 |
| 3.14 | 2025-10-07 | 2030-10-31 |
| 3.15 | 2026-10-09 | ~2031-10 |
Proposal: raise the cap in 2.3.5, drop 3.10 in 2.4
2.3.5 — raise the ceiling. Additive, unblocks installs, breaks nothing:
requires-python = ">=3.10,<3.16"- add the
Programming Language :: Python :: 3.15classifier - add a
py315pixi feature and atest-py315environment, alongside the existingpy310/py314 - add 3.15 to the CI matrices, including the Windows job
- bump the conda-forge recipe bound to match
Test against an rc before the 9th rather than assuming. The cap is a claim that we work on 3.15, and nothing in the dependency set has been exercised there — numpy, pandas, pymysql, pydot, deepdiff and pydantic-settings all need wheels or a working build. If something is not ready, better to learn it now and either wait or pin that one dependency.
2.4 — drop 3.10. Breaking, so it belongs with the other breaking change already scheduled there (#1557):
requires-python = ">=3.11,<3.16"- remove the
3.10classifier - move the CI floor and the pixi environment from
py310topy311 target-version = "py311"for ruff (pyproject.toml:135)
Every place a version is pinned
| file | line | what |
|---|---|---|
pyproject.toml |
22 | requires-python = ">=3.10,<3.15" |
pyproject.toml |
60-64 | classifiers, 3.10 through 3.14 |
pyproject.toml |
135 | target-version = "py310" (ruff) |
pyproject.toml |
267-271 | pixi features py310, py314 |
pyproject.toml |
279-280 | pixi environments test-py310, test-py314 |
.github/workflows/test.yaml |
83 | Windows matrix ["3.10", "3.14"] |
.github/workflows/test.yaml |
34, 82 | comments restating the range |
| conda-forge feedstock | recipe/meta.yaml |
python_min, and python >={{ python_min }},<3.15 |
Open question
Whether anyone we support is still pinned to 3.10 — that decides how gently 2.4 has to handle the drop, and whether it needs a deprecation notice in 2.3.5 first.
- Langage dominant
- Python
- Étoiles
- 197
- Forks
- 98
- Merge moyen
- 23 h 9 min
- PR mergées (30 j)
- 6
Préparer son environnement
- Fournit un Dockerfile ou un fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de datajoint/datajoint-python
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
datajoint/datajoint-python#1539 · 3 commentaires ·
-
JSON path equality against a non-string value: silently empty on MySQL, raises on PostgreSQLOuvertebug
Difficulté 3/5 1-2 jours Accessibilité débutants 75/100
datajoint/datajoint-python#1564 ·
-
JSON path type annotation is not portable: `data.n:int` works on PostgreSQL, raises on MySQLOuvertebug
Difficulté 4/5 3-5 jours Accessibilité débutants 68/100
datajoint/datajoint-python#1563 ·
-
enhancement
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
datajoint/datajoint-python#1562 · 2 commentaires ·
-
bug
Difficulté 3/5 1-2 jours Accessibilité débutants 75/100
datajoint/datajoint-python#1561 · 1 commentaire ·
Toutes les issues de datajoint/datajoint-python
Issues similaires
-
needs-human needs-triage
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
gke-labs/kube-agents#2400 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Device Details tables: FS/SF columns contradict each other (nfet_01v8 Vt row, pfet_01v8 Idsat row)Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
google/skywater-pdk#450 ·
-
Drained trajectory arrays are overwritten when the sequence buffer is reusedPeut-être pris @sylvesterkaczmarek l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
google-deepmind/bsuite#56 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
LearningCircuit/local-deep-research#7206 ·
Les mainteneurs répondent en général sous 1 jour
-
[TASK] Document technology stackOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
chingu-voyages/V62-tier3-team-33#285 ·
Les mainteneurs répondent en général sous 1 jour