Skip to content

deps: relax pydantic pin to >=2.9.2 (unblock modern mcp/fastmcp) - #49

Merged
discreteds merged 1 commit into
developfrom
feature/relax-pydantic-pin
Jul 19, 2026
Merged

deps: relax pydantic pin to >=2.9.2 (unblock modern mcp/fastmcp)#49
discreteds merged 1 commit into
developfrom
feature/relax-pydantic-pin

Conversation

@discreteds

Copy link
Copy Markdown
Member

What

Relax pydantic==2.9.2pydantic>=2.9.2 in mountainash-settings. Keep pydantic-settings==2.6.1.

Why

The exact pydantic==2.9.2 pin transitively blocked every consumer that needs pydantic>=2.11. Concretely, modern mcp/fastmcp (Tool.from_function) needs pydantic>=2.11 to handle PEP 604 str | None tool parameter annotations; on the old pin the resolver backtracked mcp to 1.12.4, whose fastmcp raises TypeError: issubclass() arg 1 must be a class on union annotations. This surfaced building the mountainash-pointbreak-mcp semantic-search integration env.

Safety

pydantic-settings is kept at 2.6.1 because 2.14.x regresses this package's env_prefix + dotenv handling (test_init_file_prefix1: file-sourced values return None). Confirmed by bisection: the test passes on 2.6.1, fails on 2.14.2.

Full settings test suite on the combo this pin resolves to (pydantic 2.13.4 + pydantic-settings 2.6.1): 441 passed.

🤖 Generated with Claude Code

The exact pydantic==2.9.2 pin blocked any consumer needing pydantic>=2.11 —
notably modern mcp/fastmcp, whose Tool.from_function needs pydantic>=2.11 to
handle PEP 604 (str | None) tool annotations. Relaxing to >=2.9.2 lets those
consumers resolve while keeping 2.9.2 as the floor.

pydantic-settings stays hard-pinned at 2.6.1: 2.14.x regresses env_prefix +
dotenv handling (test_init_file_prefix1 — file-sourced values return None).
Full settings suite: 441 passed on pydantic 2.13.4 + pydantic-settings 2.6.1.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@sonarqubecloud

Copy link
Copy Markdown

@discreteds

Copy link
Copy Markdown
Member Author

S1 coordinated PR set (torch-free embedding + semantic e2e):

Merge order: settings #49 → core #52 + lookup #2 (together — shared build↔query contract) → mcp #3.

@discreteds
discreteds merged commit 185abfe into develop Jul 19, 2026
3 checks passed
@discreteds
discreteds deleted the feature/relax-pydantic-pin branch July 19, 2026 13:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant