mirror of
https://github.com/PrefectHQ/fastmcp.git
synced 2026-08-22 05:24:18 +02:00
refactor: reverse visibility for list_resource_templates/_list_resource_templates methods
This commit is contained in:
parent
61d98b41d1
commit
b9e32ca6a6
9 changed files with 19 additions and 19 deletions
|
|
@ -179,10 +179,10 @@ class AggregateProvider(Provider):
|
|||
# Resource Templates
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
async def list_resource_templates(self) -> Sequence[ResourceTemplate]:
|
||||
async def _list_resource_templates(self) -> Sequence[ResourceTemplate]:
|
||||
"""List all resource templates from all providers (with transforms applied)."""
|
||||
results = await gather(
|
||||
*[p._list_resource_templates() for p in self._providers],
|
||||
*[p.list_resource_templates() for p in self._providers],
|
||||
return_exceptions=True,
|
||||
)
|
||||
return self._collect_list_results(results, "list_resource_templates")
|
||||
|
|
|
|||
|
|
@ -172,11 +172,11 @@ class Provider:
|
|||
|
||||
return await chain(uri, version=version)
|
||||
|
||||
async def _list_resource_templates(self) -> Sequence[ResourceTemplate]:
|
||||
async def list_resource_templates(self) -> Sequence[ResourceTemplate]:
|
||||
"""List resource templates with all transforms applied."""
|
||||
|
||||
async def base() -> Sequence[ResourceTemplate]:
|
||||
return await self.list_resource_templates()
|
||||
return await self._list_resource_templates()
|
||||
|
||||
chain = base
|
||||
for transform in self.transforms:
|
||||
|
|
@ -303,7 +303,7 @@ class Provider:
|
|||
return None
|
||||
return max(matching, key=version_sort_key) # type: ignore[type-var]
|
||||
|
||||
async def list_resource_templates(self) -> Sequence[ResourceTemplate]:
|
||||
async def _list_resource_templates(self) -> Sequence[ResourceTemplate]:
|
||||
"""Return all available resource templates.
|
||||
|
||||
Override to provide resource templates dynamically. Returns ALL versions.
|
||||
|
|
@ -326,7 +326,7 @@ class Provider:
|
|||
Returns:
|
||||
The ResourceTemplate if a matching one is found, or None to continue searching.
|
||||
"""
|
||||
templates = await self.list_resource_templates()
|
||||
templates = await self._list_resource_templates()
|
||||
matching = [t for t in templates if t.matches(uri) is not None]
|
||||
if version:
|
||||
matching = [t for t in matching if version.matches(t.version)]
|
||||
|
|
@ -382,7 +382,7 @@ class Provider:
|
|||
results = await gather(
|
||||
self._list_tools(),
|
||||
self._list_resources(),
|
||||
self.list_resource_templates(),
|
||||
self._list_resource_templates(),
|
||||
self.list_prompts(),
|
||||
)
|
||||
tools = cast(Sequence[Tool], results[0])
|
||||
|
|
|
|||
|
|
@ -538,7 +538,7 @@ class FastMCPProvider(Provider):
|
|||
# Resource template methods
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
async def list_resource_templates(self) -> Sequence[ResourceTemplate]:
|
||||
async def _list_resource_templates(self) -> Sequence[ResourceTemplate]:
|
||||
"""List all resource templates from the mounted server.
|
||||
|
||||
Runs the mounted server's middleware so filtering/transformation applies.
|
||||
|
|
|
|||
|
|
@ -198,10 +198,10 @@ class FileSystemProvider(LocalProvider):
|
|||
await self._ensure_loaded()
|
||||
return await super()._get_resource(uri, version)
|
||||
|
||||
async def list_resource_templates(self) -> Sequence[ResourceTemplate]:
|
||||
async def _list_resource_templates(self) -> Sequence[ResourceTemplate]:
|
||||
"""Return all resource templates, reloading if in reload mode."""
|
||||
await self._ensure_loaded()
|
||||
return await super().list_resource_templates()
|
||||
return await super()._list_resource_templates()
|
||||
|
||||
async def get_resource_template(
|
||||
self, uri: str, version: VersionSpec | None = None
|
||||
|
|
|
|||
|
|
@ -550,7 +550,7 @@ class LocalProvider(Provider):
|
|||
return None
|
||||
return max(matching, key=version_sort_key) # type: ignore[type-var]
|
||||
|
||||
async def list_resource_templates(self) -> Sequence[ResourceTemplate]:
|
||||
async def _list_resource_templates(self) -> Sequence[ResourceTemplate]:
|
||||
"""Return all visible resource templates."""
|
||||
return [
|
||||
v
|
||||
|
|
|
|||
|
|
@ -379,7 +379,7 @@ class OpenAPIProvider(Provider):
|
|||
return None
|
||||
return resource
|
||||
|
||||
async def list_resource_templates(self) -> Sequence[ResourceTemplate]:
|
||||
async def _list_resource_templates(self) -> Sequence[ResourceTemplate]:
|
||||
"""Return all resource templates created from the OpenAPI spec."""
|
||||
return list(self._templates.values())
|
||||
|
||||
|
|
|
|||
|
|
@ -554,7 +554,7 @@ class ProxyProvider(Provider):
|
|||
# Resource template methods
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
async def list_resource_templates(self) -> Sequence[ResourceTemplate]:
|
||||
async def _list_resource_templates(self) -> Sequence[ResourceTemplate]:
|
||||
"""List all resource templates from the remote server."""
|
||||
try:
|
||||
client = await self._get_client()
|
||||
|
|
|
|||
|
|
@ -887,10 +887,10 @@ class FastMCP(Provider, Generic[LifespanResultT]):
|
|||
)
|
||||
return self._collect_list_results(results, "list_resources")
|
||||
|
||||
async def list_resource_templates(self) -> Sequence[ResourceTemplate]:
|
||||
async def _list_resource_templates(self) -> Sequence[ResourceTemplate]:
|
||||
"""Aggregate resource templates from all sub-providers."""
|
||||
results = await gather(
|
||||
*[p._list_resource_templates() for p in self._providers],
|
||||
*[p.list_resource_templates() for p in self._providers],
|
||||
return_exceptions=True,
|
||||
)
|
||||
return self._collect_list_results(results, "list_resource_templates")
|
||||
|
|
@ -1305,7 +1305,7 @@ class FastMCP(Provider, Generic[LifespanResultT]):
|
|||
)
|
||||
|
||||
# Query through full transform chain (provider transforms + server transforms + visibility)
|
||||
templates = await self._list_resource_templates()
|
||||
templates = await self.list_resource_templates()
|
||||
|
||||
# Get auth context (skip_auth=True for STDIO which has no auth concept)
|
||||
skip_auth, token = _get_auth_context()
|
||||
|
|
@ -1686,8 +1686,8 @@ class FastMCP(Provider, Generic[LifespanResultT]):
|
|||
f"Error reading resource {uri!r}: {e}"
|
||||
) from e
|
||||
|
||||
# Try templates (transforms + auth via _get_resource_template)
|
||||
template = await self._get_resource_template(uri, version=version)
|
||||
# Try templates (transforms + auth via get_resource_template)
|
||||
template = await self.get_resource_template(uri, version=version)
|
||||
if template is None:
|
||||
if version is None:
|
||||
raise NotFoundError(f"Unknown resource: {uri!r}")
|
||||
|
|
|
|||
|
|
@ -406,7 +406,7 @@ class TestProviderExecutionMethods:
|
|||
"""Test that read_resource_template handles template-based resources."""
|
||||
|
||||
class TemplateProvider(Provider):
|
||||
async def list_resource_templates(self) -> Sequence[ResourceTemplate]:
|
||||
async def _list_resource_templates(self) -> Sequence[ResourceTemplate]:
|
||||
return [
|
||||
FunctionResourceTemplate.from_function(
|
||||
fn=lambda name: f"content of {name}",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue