Repository navigation
feat: support Python 3.15 (and make the CI matrix test what it says) - #67
Merged
Merged
Conversation
Add the 3.15 classifier and CI job. cadquery-ocp, which build123d needs, has no 3.15 wheels yet, so the cad extra skips build123d on 3.15: DXF export works there, STEP export does not. Also pin each CI matrix job to its Python with UV_PYTHON. Until now, 'uv run' re-created .venv from .python-version, so every job of the matrix actually tested Python 3.11.
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.
Python 3.15
cadextra: build123d depends on cadquery-ocp, which has nocp315wheels yet. On 3.15 the extra now installs only ezdxf (via apython_version < '3.15'marker), so DXF export works but STEP export does not. The ImportError from STEP export now says so.mooextra: pymoo and moocore have no 3.15 wheels either, but they build from source and their tests pass.uv.lock: only the build123d marker changes. The rest of the diff is the newer uv reordering resolution markers, and no package version moves.CI fix: the matrix was testing Python 3.11 only
Each job ran
uv sync --python X, then plainuv run ….uv runfollows.python-version(3.11), so it deleted the environment and rebuilt it with 3.11. The "3.14" job log of #66 showsUsing CPython 3.14.9thenUsing CPython 3.11.17/Removed virtual environment. A job-levelUV_PYTHON: ${{ matrix.python-version }}now keeps every uv command on the matrix version.Checked locally on Python 3.15.1 (with
UV_PYTHON=3.15, interpreter confirmed after each step)pytest: 2649 passed, 7 skipped--extra cad --extra moo:tests/visualizer+tests/optimization332 passed, 3 skippedruff check .andmypy src/pylinkage: clean