8000 fix: cap requires-python at <3.14 and record uv exclude-newer policy in lockfile by 0fflineuser · Pull Request #56 · gimp-mcp/gimp-mcp · GitHub
[go: up one dir, main page]

Skip to content

fix: cap requires-python at <3.14 and record uv exclude-newer policy in lockfile - #56

Closed
0fflineuser wants to merge 1 commit into
gimp-mcp:mainfrom
0fflineuser:fix/python-314-requires-python
Closed

0fflineuser wants to merge 1 commit into
gimp-mcp:mainfrom
0fflineuser:fix/python-314-requires-python

Conversation

@0fflineuser
@0fflineuser 0fflineuser commented Sep 10, 2026 •
Copy link
Copy Markdown

TL;DR

uv sync broke on machines whose default Python is 3.14 (pydantic-core source build fails: PyO3 0.24.1 supports Python ≤ 3.13). This caps the project at Python < 3.14 and pins .python-version to 3.13, restoring prebuilt-wheel installs.

⚠️ The regenerated uv.lock also records a uv resolution policy (see Lockfile note) — reviewers please confirm that's acceptable for the repo.

Summary

  • requires-python = ">=3.11" let uv pick CPython 3.14 as the interpreter.
  • pydantic-core==2.33.2 (via mcp → pydantic) publishes no CPython 3.14 wheels, so uv built it from source.
  • The source build failed at the PyO3 build script: "the configured Python interpreter version (3.14) is newer than PyO3's maximum supported version (3.13)".

Changes

  • pyproject.toml: requires-python = ">=3.11,<3.14"
  • .python-version: pinned to 3.13 (committed so all contributors resolve the same interpreter)
  • uv.lock: regenerated for the new Python range

Testing

  • uv sync completes using prebuilt wheels — no Rust/maturin build
  • uv run python -c "import mcp, pydantic_core" → OK

Lockfile note: [options] exclude-newer

Besides the Python range, the regenerated uv.lock records the uv resolution policy under [options]:

[options]
exclude-newer = "0001-01-01T00:00:00Z" # no-op backwards-compat marker
exclude-newer-span = "P7D"
  • The 0001-01-01Z line is a documented no-op kept for backwards compatibility; the effective entry is exclude-newer-span = "P7D".
  • Purpose: supply-chain protection. When re-locking, only package versions that have been published for at least 7 days are considered, so freshly released (potentially compromised) uploads are never resolved.
  • Existing installs are unaffected: previously locked versions install from their pinned hashes.
  • Follow-up: replicate this policy explicitly in a repo-level uv.toml so it's visible and reproducible independent of uv's lockfile format.

Summary by CodeRabbit

  • Chores
    • Standardized development on Python 3.13.
    • Updated supported Python versions to 3.11–3.13.

…ntic-core wheels

On machines where Python 3.14 is the default interpreter, 'uv sync' picked
3.14 and tried to build pydantic-core 2.33.2 (via mcp -> pydantic) from
source, because no CPython 3.14 wheel exists. The source build fails at
PyO3 0.24.1, which supports a maximum of Python 3.13.

Cap requires-python at <3.14 and pin .python-version to 3.13 so uv
resolves prebuilt wheels as before.
@coderabbitai
coderabbitai Bot commented Sep 10, 2026 •
Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 09a9260b-d0eb-4ee4-86aa-f531bb6f181c

📥 Commits

Reviewing files that changed from the base of the PR and between 09bfb2d and 4dffa1a.

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (2)
  • .python-version
  • pyproject.toml

Included review availability: Your plan provides up to 2 included reviews per hour; 1 remains after this review.


Walkthrough

The project now configures Python 3.13 and limits its supported Python range to versions 3.11 through 3.13.

Changes

Python version alignment

Layer / File(s) Summary
Python version support configuration
.python-version, pyproject.toml
The project configures Python 3.13. Package metadata now requires Python 3.11 through 3.13.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Merge Risk: ⚪ Minimal · up to 4dffa

The project now targets Python 3.11–3.13 and pins local development to Python 3.13, avoiding the Python 3.14 source-build failure. Validation succeeds, with no merge-blocking risk remaining.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately identifies the Python version cap and the lockfile resolution policy. It is concise, specific, and related to the pull request objectives.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@maorcc maorcc added the bug Something isn't working label Oct 19, 2026
@tomerkon
tomerkon commented Nov 1, 2026
Copy link
Copy Markdown
Collaborator

Thanks for this! Closing as superseded: #46 refreshed uv.lock (pydantic-core 2.46.5 with cp314 wheels), so the server now installs and runs on Python 3.14 and the <3.14 cap is no longer needed. This branch's uv.lock also conflicts with main now.

@tomerkon tomerkon closed this Nov 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

0