mirror of
https://github.com/PrefectHQ/fastmcp.git
synced 2026-08-26 23:44:17 +02:00
Add meta support to tool transformation utilities (#1295)
This commit is contained in:
parent
3fc2510110
commit
3e53e62f24
4 changed files with 129 additions and 1 deletions
|
|
@ -13,7 +13,11 @@ from fastmcp.client.client import Client
|
|||
from fastmcp.exceptions import ToolError
|
||||
from fastmcp.tools import Tool, forward, forward_raw
|
||||
from fastmcp.tools.tool import FunctionTool, ToolResult
|
||||
from fastmcp.tools.tool_transform import ArgTransform, TransformedTool
|
||||
from fastmcp.tools.tool_transform import (
|
||||
ArgTransform,
|
||||
ToolTransformConfig,
|
||||
TransformedTool,
|
||||
)
|
||||
|
||||
|
||||
def get_property(tool: Tool, name: str) -> dict[str, Any]:
|
||||
|
|
@ -1428,3 +1432,65 @@ def test_transform_adds_description_to_none(sample_tool_no_title):
|
|||
"""Test that transformed tools can add description when parent has None."""
|
||||
transformed = Tool.from_tool(sample_tool_no_title, description="Added description")
|
||||
assert transformed.description == "Added description"
|
||||
|
||||
|
||||
# Meta transformation tests
|
||||
def test_transform_inherits_meta(sample_tool):
|
||||
"""Test that transformed tools inherit meta when none specified."""
|
||||
sample_tool.meta = {"original": True, "version": "1.0"}
|
||||
transformed = Tool.from_tool(sample_tool)
|
||||
assert transformed.meta == {"original": True, "version": "1.0"}
|
||||
|
||||
|
||||
def test_transform_overrides_meta(sample_tool):
|
||||
"""Test that transformed tools can override meta."""
|
||||
sample_tool.meta = {"original": True, "version": "1.0"}
|
||||
transformed = Tool.from_tool(sample_tool, meta={"custom": True, "priority": "high"})
|
||||
assert transformed.meta == {"custom": True, "priority": "high"}
|
||||
|
||||
|
||||
def test_transform_sets_meta_to_none(sample_tool):
|
||||
"""Test that transformed tools can explicitly set meta to None."""
|
||||
sample_tool.meta = {"original": True, "version": "1.0"}
|
||||
transformed = Tool.from_tool(sample_tool, meta=None)
|
||||
assert transformed.meta is None
|
||||
|
||||
|
||||
def test_transform_inherits_none_meta(sample_tool_no_title):
|
||||
"""Test that transformed tools inherit None meta."""
|
||||
sample_tool_no_title.meta = None
|
||||
transformed = Tool.from_tool(sample_tool_no_title)
|
||||
assert transformed.meta is None
|
||||
|
||||
|
||||
def test_transform_adds_meta_to_none(sample_tool_no_title):
|
||||
"""Test that transformed tools can add meta when parent has None."""
|
||||
sample_tool_no_title.meta = None
|
||||
transformed = Tool.from_tool(sample_tool_no_title, meta={"added": True})
|
||||
assert transformed.meta == {"added": True}
|
||||
|
||||
|
||||
def test_tool_transform_config_inherits_meta(sample_tool):
|
||||
"""Test that ToolTransformConfig inherits meta when unset."""
|
||||
sample_tool.meta = {"original": True, "version": "1.0"}
|
||||
config = ToolTransformConfig(name="config_tool")
|
||||
transformed = config.apply(sample_tool)
|
||||
assert transformed.meta == {"original": True, "version": "1.0"}
|
||||
|
||||
|
||||
def test_tool_transform_config_overrides_meta(sample_tool):
|
||||
"""Test that ToolTransformConfig can override meta."""
|
||||
sample_tool.meta = {"original": True, "version": "1.0"}
|
||||
config = ToolTransformConfig(
|
||||
name="config_tool", meta={"config": True, "priority": "high"}
|
||||
)
|
||||
transformed = config.apply(sample_tool)
|
||||
assert transformed.meta == {"config": True, "priority": "high"}
|
||||
|
||||
|
||||
def test_tool_transform_config_removes_meta(sample_tool):
|
||||
"""Test that ToolTransformConfig can remove meta with None."""
|
||||
sample_tool.meta = {"original": True, "version": "1.0"}
|
||||
config = ToolTransformConfig(name="config_tool", meta=None)
|
||||
transformed = config.apply(sample_tool)
|
||||
assert transformed.meta is None
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue