Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/shared.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.15"]
dep-resolution:
- name: lowest-direct
install-flags: "--upgrade --resolution lowest-direct"
Expand All @@ -72,7 +72,7 @@ jobs:
uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
with:
enable-cache: true
version: 0.9.5
version: 0.12.24

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1: The lockfile now uses revision 5, but the other jobs in this workflow still install uv 0.9.5 and run frozen syncs; those jobs will fail to read it. Upgrade the remaining lockfile-consuming jobs to a uv version that supports this revision.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At .github/workflows/shared.yml, line 75:

<comment>The lockfile now uses revision 5, but the other jobs in this workflow still install uv 0.9.5 and run frozen syncs; those jobs will fail to read it. Upgrade the remaining lockfile-consuming jobs to a uv version that supports this revision.</comment>

<file context>
@@ -72,7 +72,7 @@ jobs:
         with:
           enable-cache: true
-          version: 0.9.5
+          version: 0.12.24
 
       - name: Install the project
</file context>


- name: Install the project
run: uv sync ${{ matrix.dep-resolution.install-flags }} --all-extras --python ${{ matrix.python-version }}
Expand Down
13 changes: 9 additions & 4 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ classifiers = [
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: 3.15",
]
[project.optional-dependencies]
rich = ["rich>=13.9.4"]
Expand Down Expand Up @@ -73,11 +74,13 @@ dev = [
"inline-snapshot>=0.23.0",
"dirty-equals>=0.9.0",
"coverage[toml]>=7.10.7,<=7.13",
"pillow>=12.0",
"pillow>=12.3; python_version >= '3.15'",
"pillow>=12.0; python_version < '3.15'",
"strict-no-cover",
"logfire>=3.0.0",
"opentelemetry-sdk>=1.39.1",
"blockbuster>=1.5.27",
"blockbuster>=1.5.29; python_version >= '3.15'",
"blockbuster>=1.5.27; python_version < '3.15'",
]
docs = [
# Zensical is the Material team's successor to MkDocs; it natively
Expand Down Expand Up @@ -133,14 +136,16 @@ dependencies = [
"anyio>=4.9; python_version < '3.14'",
"httpx2>=2.10.0",
"mcp-types=={{ version }}",
"pydantic>=2.12.0",
"pydantic>=2.14.0; python_version >= '3.15'",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: The frozen lock routes Python 3.15.0rc3 through the <3.15 branch and installs Pydantic 2.12.5, despite this marker requiring 2.14.0. Use a prerelease-aware full-version cutoff in the conditional requirements and regenerate the lock.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At pyproject.toml, line 139:

<comment>The frozen lock routes Python 3.15.0rc3 through the `<3.15` branch and installs Pydantic 2.12.5, despite this marker requiring 2.14.0. Use a prerelease-aware full-version cutoff in the conditional requirements and regenerate the lock.</comment>

<file context>
@@ -133,14 +136,16 @@ dependencies = [
     "httpx2>=2.10.0",
     "mcp-types=={{ version }}",
-    "pydantic>=2.12.0",
+    "pydantic>=2.14.0; python_version >= '3.15'",
+    "pydantic>=2.12.0; python_version < '3.15'",
     "starlette>=0.48.0; python_version >= '3.14'",
</file context>

"pydantic>=2.12.0; python_version < '3.15'",
Comment thread
Kludex marked this conversation as resolved.
"starlette>=0.48.0; python_version >= '3.14'",
"starlette>=0.27; python_version < '3.14'",
"python-multipart>=0.0.9",
"sse-starlette>=3.0.0",
"uvicorn>=0.31.1; sys_platform != 'emscripten'",
"jsonschema>=4.20.0",
"pywin32>=311; sys_platform == 'win32'",
"pywin32>=312; sys_platform == 'win32' and python_version >= '3.15'",
"pywin32>=311; sys_platform == 'win32' and python_version < '3.15'",
"pyjwt[crypto]>=2.10.1",
"typing-extensions>=4.13.0",
"typing-inspection>=0.4.1",
Expand Down
4 changes: 3 additions & 1 deletion src/mcp-types/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,11 @@ classifiers = [
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: 3.15",
]
dependencies = [
"pydantic>=2.12.0",
"pydantic>=2.14.0; python_version >= '3.15'",
"pydantic>=2.12.0; python_version < '3.15'",
"typing-extensions>=4.13.0",
]

Expand Down
4 changes: 2 additions & 2 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ def blockbuster() -> Iterator[None]:
bb.functions["os.stat"].can_block_in("coverage/python.py", "get_python_source")
bb.functions["io.BufferedReader.read"].can_block_in("coverage/python.py", "read_python_source")
# jsonschema discovers its bundled schemas during its first import.
bb.functions["os.listdir"].can_block_in("/jsonschema_specifications/_core.py", "_schemas")
bb.functions["os.scandir"].can_block_in("/jsonschema_specifications/_core.py", "_schemas")
for name in bb.functions.keys() & {"os.listdir", "os.scandir"}:
bb.functions[name].can_block_in("/jsonschema_specifications/_core.py", "_schemas")
bb.functions["io.TextIOWrapper.read"].can_block_in("/jsonschema_specifications/_core.py", "_schemas")
# These public synchronous conversions read the media file by design.
bb.functions["io.BufferedReader.read"].can_block_in(
Expand Down
Loading
Loading