fix: make Python 3.15 installs resolve supported Pydantic - #28
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
Updates dependency constraints and CI validation so ml4t-engineer can install cleanly on Python 3.15 (including prereleases) by selecting a Pydantic / pydantic-core combination that publishes CPython 3.15 wheels.
Changes:
- Split core dependency spec to use stable
pydantic>=2.0.0on Python <3.15 andpydantic>=2.14.0b1on Python ≥3.15. - Update
uv.lockto lock separate Pydantic / pydantic-core versions across the Python <3.15 vs ≥3.15 boundary. - Adjust CI and release-policy tests to install the built wheel with fresh dependency resolution before applying locked test requirements.
Reviewed changes
Copilot reviewed 3 out of 4 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
pyproject.toml |
Adds Python-version-conditional Pydantic requirements to unblock Python 3.15 installs. |
uv.lock |
Locks Pydantic 2.13.4 (<3.15) vs 2.14.0b1 (≥3.15) and associated marker splits. |
.github/workflows/ci.yml |
Installs built wheel into a fresh venv with a dedicated cache directory before locked test deps. |
tests/test_release_policy.py |
Extends CI contract assertions and validates the conditional Pydantic requirements. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Comment on lines
159
to
+162
| uv venv --python python .artifact-venv | ||
| artifact_wheel="$(find dist -maxdepth 1 -name '*.whl' -print -quit)" | ||
| UV_CACHE_DIR="${{ runner.temp }}/fresh-wheel-cache" \ | ||
| uv pip install --python .artifact-venv "$artifact_wheel" |
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.
A clean public-index install of ml4t-engineer 0.1.0 on Python 3.15.0rc1 resolved pydantic 2.13.4 and failed while building pydantic-core 2.46.4. The locked release matrix did not detect this resolver path. This change selects pydantic 2.14.0b1 or newer on Python 3.15, whose pydantic-core 2.48.0 publishes CPython 3.15 wheels, while retaining stable Pydantic on Python 3.12-3.14. CI now installs each built wheel with fresh dependency resolution and an empty cache before locked test dependencies. Qualification run 31285692862 passed all 17 jobs, including Python 3.15 RC fresh installation on Linux, macOS, and Windows.