Repository navigation
build: support Python 3.15 (2.3) - #1598
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. (cherry picked from commit 1279eac)
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. (cherry picked from commit 2d8af00)
dimitri-yatsenko
requested review from
MilagrosMarin,
lum-agilyti and
ttngu207
October 17, 2026 15:31
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.
Cherry-pick of #1596 onto
maint/2.3for the v2.3.5 patch release, so DataJoint 2.3 installs on Python 3.15.Both commits apply cleanly to v2.3.4; see #1596 for the description. The 3.10 floor is unchanged on the 2.3 line.