Repository navigation
chore: add Python 3.15 to CI and make it default - #717
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 00b93800bb
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| revision = 3 | ||
| requires-python = ">=3.11, <3.15" | ||
| revision = 5 | ||
| requires-python = ">=3.11, <3.16" |
There was a problem hiding this comment.
Upgrade greenlet before locking Python 3.15
On a clean Python 3.15 sync—especially on Windows or any host without a C++ toolchain—the widened lock still selects greenlet==3.3.0 at lines 268–271, which has no cp315 wheel and predates Python 3.15 support. The greenlet changelog says preliminary 3.15 support arrived in 3.5.1, so uv sync must attempt to build this unsupported older release from source and can fail even though compatible 3.5.x wheels exist. Upgrade greenlet while regenerating the lock for 3.15.
Useful? React with 👍 / 👎.
Summary
Add Python 3.15 to CI and make it the default: test matrices in all three workflows gain 3.15, publish/docker build images,
.python-version, and Dockerfile move to 3.15,requires-pythonwidens to>=3.11,<3.16, and the lockfile resolves 3.15 wheels.User Impact
CI covers 3.15; local dev (
uv syncvia.python-version) and Docker builds run 3.15.0 stable. No trading behavior changes.Root Cause
3.15 final shipped but the repo pinned 3.14 as default and capped
requires-pythonat<3.15, so 3.15 was untested and uninstallable.Fix
python-test,python-publish,docker-publishtest 3.11–3.15; publish/docker build steps use 3.15..python-version3.15, Dockerfileuv python install 3.15/ venv, README range 3.11–3.15.requires-python >=3.11,<3.16, lockfile regenerated for 3.15 wheels.uv-pre-commithooks bumped 0.9.8 → 0.13.1 (uv ≤0.12 only knows the 3.15 RC; 0.13 resolves 3.15.0 final). CI'ssetup-uv@v7and the Dockerfile installer already track latest uv, so no bump needed there.pydantic 2.12.5→2.14.1(+pydantic-core 2.41.5→2.50.1),numpy 2.4.1→2.5.4,pandas 3.0.0→3.0.6,typing-extensions/inspection— the locked pydantic-core used PyO3 0.26 (max Python 3.14) and had no cp315 wheel, so 3.15 sync failed building from source.Validation
uv run pytest -q testsunder 3.15.0: 818 passed.ruff check --diff,ruff format --check --diff,ty check: all clean.