Skip to content

Commit 3a55e47

Browse files
committed
ensure tests will pass if no mcp dependencies are installed, install the dependencies in ci so the tests will run there
1 parent 52e2701 commit 3a55e47

File tree

6 files changed

+22
-23
lines changed

6 files changed

+22
-23
lines changed

src/fenic/api/mcp/_tool_generation_utils.py

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,24 @@
88
import polars as pl
99
from typing_extensions import Annotated
1010

11-
from fenic import (
11+
from fenic.api import col
12+
from fenic.api.dataframe import DataFrame
13+
from fenic.api.functions import avg, stddev
14+
from fenic.api.functions import max as max_
15+
from fenic.api.functions import min as min_
16+
from fenic.api.session import Session
17+
from fenic.core._logical_plan import LogicalPlan
18+
from fenic.core._logical_plan.plans import InMemorySource
19+
from fenic.core._utils.schema import convert_custom_dtype_to_polars
20+
from fenic.core.error import ConfigurationError, ValidationError
21+
from fenic.core.mcp.types import SystemTool
22+
from fenic.core.types.datatypes import (
1223
BooleanType,
13-
DataFrame,
1424
DoubleType,
1525
FloatType,
1626
IntegerType,
17-
Session,
1827
StringType,
19-
SystemTool,
20-
avg,
21-
col,
22-
stddev,
2328
)
24-
from fenic import max as max_
25-
from fenic import min as min_
26-
from fenic.core._logical_plan import LogicalPlan
27-
from fenic.core._logical_plan.plans import InMemorySource
28-
from fenic.core._utils.schema import convert_custom_dtype_to_polars
29-
from fenic.core.error import ConfigurationError, ValidationError
3029

3130
PROFILE_MAX_SAMPLE_SIZE = 10_000
3231

src/fenic/core/_serde/proto/serde_context.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@
5858
from fenic.core.mcp._validators import get_param_validator
5959
from fenic.core.mcp.types import (
6060
BoundToolParam,
61-
UserDefinedTool,
6261
ToolParamConstraints,
62+
UserDefinedTool,
6363
)
6464
from fenic.core.types.datatypes import DataType
6565
from fenic.core.types.schema import ColumnField, Schema

src/fenic/core/mcp/_server.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@
3636
from fenic.core.mcp.types import (
3737
SystemTool,
3838
TableFormat,
39-
UserDefinedTool,
4039
ToolParamConstraints,
40+
UserDefinedTool,
4141
)
4242
from fenic.core.types.datatypes import ArrayType
4343
from fenic.logging import configure_logging

src/fenic/core/mcp/types.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,10 +87,10 @@ class BoundToolParam:
8787
data_type: DataType
8888
required: bool
8989
has_default: bool
90-
default_value: Optional[ToolParameterType]
91-
allowed_values: Optional[List[ToolParameterType]]
92-
constraints: Optional[ToolParamConstraints]
93-
validators: List[ParamValidator]
90+
default_value: Optional[ToolParameterType] = None
91+
allowed_values: Optional[List[ToolParameterType]] = None
92+
constraints: Optional[ToolParamConstraints] = None
93+
validators: List[ParamValidator] = Field(default_factory=list)
9494

9595

9696
@dataclass(config=ConfigDict(arbitrary_types_allowed=True))

tests/api/mcp/test_server.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
import pytest
44

55
from fenic import ToolGenerationConfig
6+
7+
pytest.importorskip("fastmcp")
8+
69
from fenic.api.functions import col, tool_param
710
from fenic.api.mcp.server import create_mcp_server
811
from fenic.api.mcp.tools import auto_generate_system_tools_from_tables
@@ -15,7 +18,6 @@
1518

1619

1720
def test_server_generation_with_parameterized_tools(local_session: Session):
18-
pytest.importorskip("fastmcp")
1921
df = local_session.create_dataframe({"city": ["SF"], "age": [10], "user_name": ["Alice"]})
2022
query = df.filter(
2123
(col("city") == tool_param("city_name", StringType))
@@ -35,7 +37,7 @@ def test_server_generation_with_parameterized_tools(local_session: Session):
3537
query=query,
3638
)
3739

38-
server = create_mcp_server(local_session, "Test Server", parameterized_tools=[parameterized_tool])
40+
server = create_mcp_server(local_session, "Test Server", user_defined_tools=[parameterized_tool])
3941
server_tools = asyncio.run(server.mcp.get_tools())
4042
assert len(server_tools) == 1
4143
parameter_schema = server_tools["tool_x"].parameters['properties']
@@ -57,7 +59,6 @@ def test_server_generation_with_parameterized_tools(local_session: Session):
5759
assert user_names_param['description'] == "User names"
5860

5961
def test_server_generation(local_session: Session):
60-
pytest.importorskip("fastmcp")
6162
create_table_with_rows(local_session, "t1", [1, 2, 3], description="table one")
6263
create_table_with_rows(local_session, "t2", [10, 20], description="table two")
6364
tools = auto_generate_system_tools_from_tables(["t1", "t2"], local_session, tool_group_name="Auto")

tests/core/mcp/test_binder.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ def test_bind_parameters_type_mismatch_raises(local_session: Session):
8080
required=True,
8181
has_default=False,
8282
allowed_values=None,
83-
default_value=None,
8483
)
8584
],
8685
)

0 commit comments

Comments
 (0)