Skip to content

ci: pin pydantic in the minimum-mcp job to a known-good version - #18

Merged
shkyyy18 merged 1 commit into
shkyyy18:mainfrom
DUC750:ci/pin-pydantic-minimum-mcp
Oct 13, 2026
Merged

shkyyy18 merged 1 commit into
shkyyy18:mainfrom
DUC750:ci/pin-pydantic-minimum-mcp

Conversation

@DUC750

@DUC750 DUC750 commented Oct 13, 2026

Copy link
Copy Markdown
Contributor

Summary

Describe the bridge, schema, export, compatibility, documentation, or test change.

CI-only change, split out of #17 as requested there.

The minimum-mcp job installs mcp==1.12.0 but leaves pydantic unpinned, so pip now resolves pydantic 2.14.1. mcp 1.12.0 imports eval_type_backport from pydantic._internal._typing_extra, which no longer exists in that version. Every test module that imports mcp.server.fastmcp then fails during collection.

  • .github/workflows/ci.yml: the minimum-mcp job now installs "pydantic==2.11.10" together with "mcp==1.12.0", with a comment naming this as the known-good combination. The test matrix and pyproject.toml are unchanged.
  • I pinned the exact tested version rather than a range, because the first pydantic version that breaks mcp 1.12.0 is not narrowed down.

Validation

  • python -m pytest -q -p no:cacheprovider
  • python -m ruff check src tests
  • Syntax/build checks pass where applicable

Reproduced the job locally on Python 3.11 (Windows, uv venv), from current main:

  • pip install -e ".[dev]" "mcp==1.12.0" → pydantic 2.14.1, ImportError: cannot import name 'eval_type_backport', 11 errors during collection.
  • pip install -e ".[dev]" "mcp==1.12.0" "pydantic==2.11.10" → 339 passed.

python -m ruff check src tests scripts: all checks passed (no Python file changes). The workflow file parses as YAML.

Data and security

  • Fixtures and screenshots use synthetic data only
  • No passToken, account ID, database, export, log, or personal health record is included
  • Unofficial Xiaomi status and upstream MIT attribution remain intact
  • This change does not add a hosted credential proxy or coaching/medical behavior

Licensing

  • I agree to the contribution licensing terms in CONTRIBUTING.md (AGPL-3.0-only, plus granting the maintainer the right to offer commercial licenses)

Compatibility

List affected devices, regions, datasets, commands, schemas, or MCP tools.

  • Affected: only the minimum-mcp CI job. No devices, regions, datasets, commands, schemas or MCP tools change.
  • The declared dependency range (pydantic>=2, mcp>=1.12,<2.0) stays as it is. Users who install exactly mcp 1.12.0 together with a recent pydantic would hit the same import error; that is outside this PR.

mcp 1.12.0 imports eval_type_backport from pydantic._internal._typing_extra.
With pydantic unpinned, pip now resolves 2.14.1, where that name is gone, so
every test module that imports mcp.server.fastmcp fails during collection.
Pin the tested combination (mcp 1.12.0 + pydantic 2.11.10) in this job only;
the exact pydantic version that breaks it is not narrowed down.
@shkyyy18
shkyyy18 merged commit 4a55d89 into shkyyy18:main Oct 13, 2026
4 checks passed
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.

2 participants