fix: relax Werkzeug and pydantic pins so frappe-mcp installs on Frappe v16 - #5
Open
dottenbr wants to merge 1 commit into
Open
fix: relax Werkzeug and pydantic pins so frappe-mcp installs on Frappe v16#5dottenbr wants to merge 1 commit into
dottenbr wants to merge 1 commit into
Conversation
frappe-mcp pinned Werkzeug==3.1.3 and pydantic~=2.11.7. Frappe v16 pins Werkzeug==3.1.6 and pydantic~=2.12.5, so neither range overlaps and installing frappe-mcp into a v16 bench downgrades the framework's own WSGI layer without any warning from pip. Nothing in the library depends on those exact versions: it uses Request and Response from werkzeug.wrappers, and BaseModel and ValidationError from pydantic. Test suite passes at both the locked versions and the ones Frappe v16 pins. Same fix as frappe#4 applied to Click. Co-Authored-By: Claude <noreply@anthropic.com>
Confidence Score: 5/5Safe to merge — only dependency specifiers are widened, resolved lockfile versions are unchanged, and the PR author verified the test suite passes against both the old and target versions. Both changed files touch only version specifiers. The lockfile still resolves to the same concrete versions, so nothing in the runtime environment changes for existing users. The surface used from each library ( No files require special attention. Reviews (1): Last reviewed commit: "fix: relax Werkzeug and pydantic pins to..." | Re-trigger Greptile |
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.
Installing
frappe-mcpinto a Frappe v16 bench quietly downgrades two of the framework's own pinned dependencies.Frappe v16 pins
Werkzeug==3.1.6andpydantic~=2.12.5.frappe-mcppinsWerkzeug==3.1.3andpydantic~=2.11.7. Neither range overlaps, so there is no version that satisfies both.What makes this awkward is that pip doesn't complain. Frappe is installed editable, so its requirements aren't reconsidered during resolution, and pip just goes ahead:
So a
pip install frappe-mcpswaps out the WSGI layer that Frappe serves every request through, and nothing warns you.There's a second-order problem on v16 specifically. Frappe v16 sets
requires-python = ">=3.14,<3.15", andpydantic-core2.33.2 (whichpydantic~=2.11.7resolves to) publishes no cp314 wheel — only an sdist. So the downgrade also drags in a Rust build of pydantic-core, which is what actually fails on a stock bench:pydantic-core2.41.5, whichpydantic 2.12.5uses, does ship a cp314 wheel.As far as I can tell the pins aren't load-bearing. The library imports
RequestandResponsefromwerkzeug.wrappers, andBaseModelandValidationErrorfrompydantic— all stable across these versions. I ran the test suite against both the currently locked versions and the ones Frappe v16 pins:67 passed67 passedruff checkis clean on both.This is the same problem #4 fixed for Click, so I've taken the same approach and widened the ranges rather than bumping to a new exact version. Pinning
==3.1.6would just break anyone still on v15, which pins Werkzeug 3.1.3.uv.lockis updated for the new specifiers only. The resolved versions are unchanged (Werkzeug 3.1.3, pydantic 2.11.7), so the lockfile still describes exactly the same dependency set, anduv lock --checkpasses.