Repository navigation
build: support Python 3.15 - #1596
Open
dimitri-yatsenko wants to merge 2 commits into
Open
dimitri-yatsenko wants to merge 2 commits into
dimitri-yatsenko wants to merge 2 commits into
Conversation
Python 3.15.0 was released on 2026-10-09, and `requires-python = ">=3.10,<3.15"` made pip refuse to install DataJoint on it. The cap moves to `<3.16` (in `[project]` and in the pixi workspace), the 3.15 classifier is added, and a `test-py315` pixi environment joins `test-py310` and `test-py314`. The Linux and Windows test matrices gain a 3.15 leg; 3.14 stays in both. The 3.10 floor is unchanged; dropping it is planned for 2.4. One dependency is not ready for 3.15. `deepdiff` 9.x requires `cachebox>=5.2,<6`, and no cachebox 5.x release ships 3.15 wheels. Its sdist builds with PyO3 0.27, which supports CPython only up to 3.14, so building from source fails too. Until deepdiff accepts cachebox 6 (which does ship 3.15 wheels), installing on 3.15 fails at cachebox, and the new 3.15 CI legs will fail while installing dependencies. Every other package in the test environment has 3.15 wheels on Linux, macOS and Windows. `pixi.lock` is regenerated. Besides the new environment it adds what the committed lock was missing: the `test-py310` and `test-py314` environments, and `packaging` in the default environment. Part of #1569.
deepdiff 9.x requires `cachebox>=5.2,<6`. No cachebox 5.x release ships Python 3.15 wheels, and its sdist cannot be built for 3.15 because it uses PyO3 0.27, which supports CPython only up to 3.14. So on 3.15, installing DataJoint fails at cachebox. deepdiff 8.6.x is pure Python and depends only on orderly-set. DataJoint uses deepdiff only for `DeepHash` in the three-part `make` check in autopopulate, which works the same on 8.6. The bound applies only on 3.15 and later; other Python versions keep resolving the newest deepdiff. Drop it once deepdiff accepts cachebox 6, which ships 3.15 wheels. With this bound the full test suite passes on Python 3.15.0, integration tests included, and every compiled dependency in the test set has 3.15 wheels for Linux, macOS and Windows. Part of #1569.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #1569. This is the Python 3.15 half; dropping 3.10 follows in 2.4.
Python 3.15.0 was released on 2026-10-09.
requires-python = ">=3.10,<3.15"makes pip refuse to install DataJoint on it.requires-pythonbecomes<3.16, in[project]and in the pixi workspace, and the 3.15 classifier is added.test-py315pixi environment joinstest-py310andtest-py314, and the Linux and Windows test matrices gain a 3.15 leg. 3.14 stays in both. The 3.10 floor is unchanged.cachebox>=5.2,<6. No cachebox 5.x release ships 3.15 wheels, and its sdist cannot build for 3.15 (PyO3 0.27 supports CPython only up to 3.14).DeepHashin the three-partmakecheck, which behaves the same on 8.6.pixi.lockis regenerated. Besides the new environment, it adds what the committed lock was missing: thetest-py310andtest-py314environments, andpackagingin the default environment.With the bound, the full suite passes on Python 3.15.0, integration tests included. Every compiled dependency in the test set has 3.15 wheels for Linux, macOS and Windows.
The same commits go onto
maint/2.3for the v2.3.5 patch release.