mirror of
https://github.com/PrefectHQ/fastmcp.git
synced 2026-08-21 21:14:17 +02:00
Update for 'result' kwarg instead of 'value'
This commit is contained in:
parent
d8dc28b9b2
commit
ddb557ba30
2 changed files with 29 additions and 29 deletions
|
|
@ -355,7 +355,7 @@ class TestCallTools:
|
|||
result = await manager.call_tool("add", {"a": 1, "b": 2})
|
||||
|
||||
assert result.content[0].text == "3" # type: ignore[attr-defined]
|
||||
assert result.structured_content == {"value": 3}
|
||||
assert result.structured_content == {"result": 3}
|
||||
|
||||
async def test_call_async_tool(self):
|
||||
async def double(n: int) -> int:
|
||||
|
|
@ -367,7 +367,7 @@ class TestCallTools:
|
|||
manager.add_tool(tool)
|
||||
result = await manager.call_tool("double", {"n": 5})
|
||||
assert result.content[0].text == "10" # type: ignore[attr-defined]
|
||||
assert result.structured_content == {"value": 10}
|
||||
assert result.structured_content == {"result": 10}
|
||||
|
||||
async def test_call_tool_callable_object(self):
|
||||
class Adder:
|
||||
|
|
@ -382,7 +382,7 @@ class TestCallTools:
|
|||
manager.add_tool(tool)
|
||||
result = await manager.call_tool("Adder", {"x": 1, "y": 2})
|
||||
assert result.content[0].text == "3" # type: ignore[attr-defined]
|
||||
assert result.structured_content == {"value": 3}
|
||||
assert result.structured_content == {"result": 3}
|
||||
|
||||
async def test_call_tool_callable_object_async(self):
|
||||
class Adder:
|
||||
|
|
@ -397,7 +397,7 @@ class TestCallTools:
|
|||
manager.add_tool(tool)
|
||||
result = await manager.call_tool("Adder", {"x": 1, "y": 2})
|
||||
assert result.content[0].text == "3" # type: ignore[attr-defined]
|
||||
assert result.structured_content == {"value": 3}
|
||||
assert result.structured_content == {"result": 3}
|
||||
|
||||
async def test_call_tool_with_default_args(self):
|
||||
def add(a: int, b: int = 1) -> int:
|
||||
|
|
@ -410,7 +410,7 @@ class TestCallTools:
|
|||
result = await manager.call_tool("add", {"a": 1})
|
||||
|
||||
assert result.content[0].text == "2" # type: ignore[attr-defined]
|
||||
assert result.structured_content == {"value": 2}
|
||||
assert result.structured_content == {"result": 2}
|
||||
|
||||
async def test_call_tool_with_missing_args(self):
|
||||
def add(a: int, b: int) -> int:
|
||||
|
|
@ -438,7 +438,7 @@ class TestCallTools:
|
|||
|
||||
result = await manager.call_tool("sum_vals", {"vals": [1, 2, 3]})
|
||||
assert result.content[0].text == "6" # type: ignore[attr-defined]
|
||||
assert result.structured_content == {"value": 6}
|
||||
assert result.structured_content == {"result": 6}
|
||||
|
||||
async def test_call_tool_with_list_str_or_str_input(self):
|
||||
def concat_strs(vals: list[str] | str) -> str:
|
||||
|
|
@ -451,11 +451,11 @@ class TestCallTools:
|
|||
# Try both with plain python object and with JSON list
|
||||
result = await manager.call_tool("concat_strs", {"vals": ["a", "b", "c"]})
|
||||
assert result.content[0].text == "abc" # type: ignore[attr-defined]
|
||||
assert result.structured_content == {"value": "abc"}
|
||||
assert result.structured_content == {"result": "abc"}
|
||||
|
||||
result = await manager.call_tool("concat_strs", {"vals": "a"})
|
||||
assert result.content[0].text == "a" # type: ignore[attr-defined]
|
||||
assert result.structured_content == {"value": "a"}
|
||||
assert result.structured_content == {"result": "a"}
|
||||
|
||||
async def test_call_tool_with_complex_model(self):
|
||||
class MyShrimpTank(BaseModel):
|
||||
|
|
@ -487,7 +487,7 @@ class TestCallTools:
|
|||
)
|
||||
|
||||
assert result.content[0].text == '[\n "rex",\n "gertrude"\n]' # type: ignore[attr-defined]
|
||||
assert result.structured_content == {"value": ["rex", "gertrude"]}
|
||||
assert result.structured_content == {"result": ["rex", "gertrude"]}
|
||||
|
||||
async def test_call_tool_with_custom_serializer(self):
|
||||
"""Test that a custom serializer provided to FastMCP is used by tools."""
|
||||
|
|
@ -533,7 +533,7 @@ class TestCallTools:
|
|||
== 'CUSTOM:[{"key": "value", "number": 123}, {"key": "value2", "number": 456}]' # type: ignore[attr-defined]
|
||||
)
|
||||
assert result.structured_content == {
|
||||
"value": [
|
||||
"result": [
|
||||
{"key": "value", "number": 123},
|
||||
{"key": "value2", "number": 456},
|
||||
]
|
||||
|
|
@ -559,7 +559,7 @@ class TestCallTools:
|
|||
result.content[0].text # type: ignore[attr-defined]
|
||||
== pydantic_core.to_json(uuid_result).decode()
|
||||
)
|
||||
assert result.structured_content == {"value": str(uuid_result)}
|
||||
assert result.structured_content == {"result": str(uuid_result)}
|
||||
|
||||
|
||||
class TestToolSchema:
|
||||
|
|
@ -630,7 +630,7 @@ class TestContextHandling:
|
|||
async with context:
|
||||
result = await manager.call_tool("tool_with_context", {"x": 42})
|
||||
assert result.content[0].text == "42" # type: ignore[attr-defined]
|
||||
assert result.structured_content == {"value": "42"}
|
||||
assert result.structured_content == {"result": "42"}
|
||||
|
||||
async def test_context_injection_async(self):
|
||||
"""Test that context is properly injected in async tools."""
|
||||
|
|
@ -649,7 +649,7 @@ class TestContextHandling:
|
|||
async with context:
|
||||
result = await manager.call_tool("async_tool", {"x": 42})
|
||||
assert result.content[0].text == "42" # type: ignore[attr-defined]
|
||||
assert result.structured_content == {"value": "42"}
|
||||
assert result.structured_content == {"result": "42"}
|
||||
|
||||
async def test_context_optional(self):
|
||||
"""Test that context is optional when calling tools."""
|
||||
|
|
@ -668,7 +668,7 @@ class TestContextHandling:
|
|||
async with context:
|
||||
result = await manager.call_tool("tool_with_context", {"x": 42})
|
||||
assert result.content[0].text == "42" # type: ignore[attr-defined]
|
||||
assert result.structured_content == {"value": 42}
|
||||
assert result.structured_content == {"result": 42}
|
||||
|
||||
def test_parameterized_context_parameter_detection(self):
|
||||
"""Test that context parameters are properly detected in
|
||||
|
|
@ -777,7 +777,7 @@ class TestCustomToolNames:
|
|||
# Tool should be callable by its custom name
|
||||
result = await manager.call_tool("custom_multiply", {"a": 5, "b": 3})
|
||||
assert result.content[0].text == "15" # type: ignore[attr-defined]
|
||||
assert result.structured_content == {"value": 15}
|
||||
assert result.structured_content == {"result": 15}
|
||||
|
||||
# Original name should not be registered
|
||||
with pytest.raises(NotFoundError, match="Tool 'multiply' not found"):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue