mirror of
https://github.com/PrefectHQ/fastmcp.git
synced 2026-08-19 20:14:17 +02:00
Change middleware return types from list to Sequence
This fixes covariance issues in middleware method signatures by using Sequence instead of list for return type annotations. Lists are invariant while Sequences are covariant, allowing middleware subclasses to properly type their return values. Fixes #2055 Co-authored-by: William Easton <strawgate@users.noreply.github.com>
This commit is contained in:
parent
8b1099d283
commit
e196384a6a
1 changed files with 15 additions and 11 deletions
|
|
@ -1,7 +1,7 @@
|
|||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
from collections.abc import Awaitable
|
||||
from collections.abc import Awaitable, Sequence
|
||||
from dataclasses import dataclass, field, replace
|
||||
from datetime import datetime, timezone
|
||||
from functools import partial
|
||||
|
|
@ -164,8 +164,10 @@ class Middleware:
|
|||
async def on_read_resource(
|
||||
self,
|
||||
context: MiddlewareContext[mt.ReadResourceRequestParams],
|
||||
call_next: CallNext[mt.ReadResourceRequestParams, list[ReadResourceContents]],
|
||||
) -> list[ReadResourceContents]:
|
||||
call_next: CallNext[
|
||||
mt.ReadResourceRequestParams, Sequence[ReadResourceContents]
|
||||
],
|
||||
) -> Sequence[ReadResourceContents]:
|
||||
return await call_next(context)
|
||||
|
||||
async def on_get_prompt(
|
||||
|
|
@ -178,27 +180,29 @@ class Middleware:
|
|||
async def on_list_tools(
|
||||
self,
|
||||
context: MiddlewareContext[mt.ListToolsRequest],
|
||||
call_next: CallNext[mt.ListToolsRequest, list[Tool]],
|
||||
) -> list[Tool]:
|
||||
call_next: CallNext[mt.ListToolsRequest, Sequence[Tool]],
|
||||
) -> Sequence[Tool]:
|
||||
return await call_next(context)
|
||||
|
||||
async def on_list_resources(
|
||||
self,
|
||||
context: MiddlewareContext[mt.ListResourcesRequest],
|
||||
call_next: CallNext[mt.ListResourcesRequest, list[Resource]],
|
||||
) -> list[Resource]:
|
||||
call_next: CallNext[mt.ListResourcesRequest, Sequence[Resource]],
|
||||
) -> Sequence[Resource]:
|
||||
return await call_next(context)
|
||||
|
||||
async def on_list_resource_templates(
|
||||
self,
|
||||
context: MiddlewareContext[mt.ListResourceTemplatesRequest],
|
||||
call_next: CallNext[mt.ListResourceTemplatesRequest, list[ResourceTemplate]],
|
||||
) -> list[ResourceTemplate]:
|
||||
call_next: CallNext[
|
||||
mt.ListResourceTemplatesRequest, Sequence[ResourceTemplate]
|
||||
],
|
||||
) -> Sequence[ResourceTemplate]:
|
||||
return await call_next(context)
|
||||
|
||||
async def on_list_prompts(
|
||||
self,
|
||||
context: MiddlewareContext[mt.ListPromptsRequest],
|
||||
call_next: CallNext[mt.ListPromptsRequest, list[Prompt]],
|
||||
) -> list[Prompt]:
|
||||
call_next: CallNext[mt.ListPromptsRequest, Sequence[Prompt]],
|
||||
) -> Sequence[Prompt]:
|
||||
return await call_next(context)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue