◐ Shell
clean mode source ↗

Support Python 3.14 by Kludex · Pull Request #1834 · modelcontextprotocol/python-sdk

@Kludex

Kludex

@Kludex

maxisbey

@maxisbey

@Kludex

@Kludex Kludex deleted the support-python-314 branch

January 7, 2026 16:28

maxisbey added a commit that referenced this pull request

Jun 3, 2026
Add the 3.14 trove classifier, add 3.14 to the CI test matrix, and make
the dependency floors installable there:

- pydantic >=2.12.0 and starlette >=0.48.0 on 3.14 only (older floors
  pin pydantic-core 2.33.0 / predate 3.14 support and have no cp314
  wheels); floors for <3.14 are unchanged
- pywin32 >=311 on 3.14 only (310 ships no cp314 wheels)
- mkdocs-material[imaging] >=9.6.19: the 9.5.45 imaging extra pins
  pillow~=10.2, which has no cp314 wheels and fails to install on the
  3.14 lowest-direct lane; 9.6.19 allows pillow 11.x
- backport the coverage workarounds from #1834 (coveragepy#1987 branch
  misreporting on 3.14), plus one no-branch pragma for a nested
  async-with arc in test_sse_security.py
- regenerate uv.lock with the 3.14 resolution fork

The README badge lists supported versions from the classifiers of the
latest PyPI release, so the badge updates at the next v1.x release.

Update CONTRIBUTING.md to say 3.10 through 3.14.

maxisbey added a commit that referenced this pull request

Jun 3, 2026
Add the 3.14 trove classifier, add 3.14 to the CI test matrix, and make
the dependency floors installable there:

- pydantic >=2.12.0 and starlette >=0.48.0 on 3.14 only (older floors
  pin pydantic-core 2.33.0 / predate 3.14 support and have no cp314
  wheels); floors for <3.14 are unchanged
- pywin32 >=311 on 3.14 only (310 ships no cp314 wheels)
- mkdocs-material[imaging] >=9.6.19: the 9.5.45 imaging extra pins
  pillow~=10.2, which has no cp314 wheels and fails to install on the
  3.14 lowest-direct lane; 9.6.19 allows pillow 11.x
- backport the coverage workarounds from #1834 (coveragepy#1987 branch
  misreporting on 3.14), plus one no-branch pragma for a nested
  async-with arc in test_sse_security.py
- regenerate uv.lock with the 3.14 resolution fork

The README badge lists supported versions from the classifiers of the
latest PyPI release, so the badge updates at the next v1.x release.

Update CONTRIBUTING.md to say 3.10 through 3.14.