Skip to content

Commit 876c709

Browse files
authored
lint: enable TRY003,TRY004 (#248)
Enable TRY003, TRY004
1 parent 1e59033 commit 876c709

File tree

7 files changed

+41
-30
lines changed

7 files changed

+41
-30
lines changed

examples/servers/streamable-http-stateless/mcp_simple_streamablehttp_stateless/server.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
import logging
33
from collections.abc import AsyncIterator
44

5-
import anyio
65
import click
76
import mcp.types as types
87
from mcp.server.lowlevel import Server

langchain_mcp_adapters/client.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,8 @@ async def session(
9898
9999
"""
100100
if server_name not in self.connections:
101-
raise ValueError(
102-
f"Couldn't find a server with name '{server_name}', expected one of '{list(self.connections.keys())}'"
103-
)
101+
msg = f"Couldn't find a server with name '{server_name}', expected one of '{list(self.connections.keys())}'"
102+
raise ValueError(msg)
104103

105104
async with create_session(self.connections[server_name]) as session:
106105
if auto_initialize:
@@ -122,9 +121,8 @@ async def get_tools(self, *, server_name: str | None = None) -> list[BaseTool]:
122121
"""
123122
if server_name is not None:
124123
if server_name not in self.connections:
125-
raise ValueError(
126-
f"Couldn't find a server with name '{server_name}', expected one of '{list(self.connections.keys())}'"
127-
)
124+
msg = f"Couldn't find a server with name '{server_name}', expected one of '{list(self.connections.keys())}'"
125+
raise ValueError(msg)
128126
return await load_mcp_tools(None, connection=self.connections[server_name])
129127

130128
all_tools: list[BaseTool] = []

langchain_mcp_adapters/prompts.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,11 @@ def convert_mcp_prompt_message_to_langchain_message(
2222
return HumanMessage(content=message.content.text)
2323
if message.role == "assistant":
2424
return AIMessage(content=message.content.text)
25-
raise ValueError(f"Unsupported prompt message role: {message.role}")
25+
msg = f"Unsupported prompt message role: {message.role}"
26+
raise ValueError(msg)
2627

27-
raise ValueError(f"Unsupported prompt message content type: {message.content.type}")
28+
msg = f"Unsupported prompt message content type: {message.content.type}"
29+
raise ValueError(msg)
2830

2931

3032
async def load_mcp_prompt(

langchain_mcp_adapters/resources.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ def convert_mcp_resource_to_langchain_blob(resource_uri: str, contents: Resource
2121
elif isinstance(contents, BlobResourceContents):
2222
data = base64.b64decode(contents.blob)
2323
else:
24-
raise ValueError(f"Unsupported content type for URI {resource_uri}")
24+
msg = f"Unsupported content type for URI {resource_uri}"
25+
raise TypeError(msg)
2526

2627
return Blob.from_data(data=data, mime_type=contents.mimeType, metadata={"uri": resource_uri})
2728

@@ -78,6 +79,7 @@ async def load_mcp_resources(
7879
resource_blobs = await get_mcp_resource(session, uri)
7980
blobs.extend(resource_blobs)
8081
except Exception as e:
81-
raise RuntimeError(f"Error fetching resource {uri}") from e
82+
msg = f"Error fetching resource {uri}"
83+
raise RuntimeError(msg) from e
8284

8385
return blobs

langchain_mcp_adapters/sessions.py

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ class SSEConnection(TypedDict):
8989
sse_read_timeout: NotRequired[float]
9090
"""SSE read timeout.
9191
92-
Default is 300 seconds (5 minutes). This is how long the client will
92+
Default is 300 seconds (5 minutes). This is how long the client will
9393
wait for a new event before disconnecting.
9494
"""
9595

@@ -281,11 +281,12 @@ async def _create_websocket_session(
281281
try:
282282
from mcp.client.websocket import websocket_client
283283
except ImportError:
284-
raise ImportError(
285-
"Could not import websocket_client. ",
286-
"To use Websocket connections, please install the required dependency with: ",
287-
"'pip install mcp[ws]' or 'pip install websockets'",
288-
) from None
284+
msg = (
285+
"Could not import websocket_client. "
286+
"To use Websocket connections, please install the required dependency with: "
287+
"'pip install mcp[ws]' or 'pip install websockets'"
288+
)
289+
raise ImportError(msg) from None
289290

290291
async with websocket_client(url) as (read, write):
291292
async with ClientSession(read, write, **(session_kwargs or {})) as session:
@@ -307,40 +308,47 @@ async def create_session(connection: Connection) -> AsyncIterator[ClientSession]
307308
A ClientSession
308309
"""
309310
if "transport" not in connection:
310-
raise ValueError(
311+
msg = (
311312
"Configuration error: Missing 'transport' key in server configuration. "
312313
"Each server must include 'transport' with one of: "
313314
"'stdio', 'sse', 'websocket', 'streamable_http'. "
314315
"Please refer to the langchain-mcp-adapters documentation for more details."
315316
)
317+
raise ValueError(msg)
316318

317319
transport = connection["transport"]
318320
params = {k: v for k, v in connection.items() if k != "transport"}
319321

320322
if transport == "sse":
321323
if "url" not in params:
322-
raise ValueError("'url' parameter is required for SSE connection")
324+
msg = "'url' parameter is required for SSE connection"
325+
raise ValueError(msg)
323326
async with _create_sse_session(**params) as session:
324327
yield session
325328
elif transport == "streamable_http":
326329
if "url" not in params:
327-
raise ValueError("'url' parameter is required for Streamable HTTP connection")
330+
msg = "'url' parameter is required for Streamable HTTP connection"
331+
raise ValueError(msg)
328332
async with _create_streamable_http_session(**params) as session:
329333
yield session
330334
elif transport == "stdio":
331335
if "command" not in params:
332-
raise ValueError("'command' parameter is required for stdio connection")
336+
msg = "'command' parameter is required for stdio connection"
337+
raise ValueError(msg)
333338
if "args" not in params:
334-
raise ValueError("'args' parameter is required for stdio connection")
339+
msg = "'args' parameter is required for stdio connection"
340+
raise ValueError(msg)
335341
async with _create_stdio_session(**params) as session:
336342
yield session
337343
elif transport == "websocket":
338344
if "url" not in params:
339-
raise ValueError("'url' parameter is required for Websocket connection")
345+
msg = "'url' parameter is required for Websocket connection"
346+
raise ValueError(msg)
340347
async with _create_websocket_session(**params) as session:
341348
yield session
342349
else:
343-
raise ValueError(
350+
msg = (
344351
f"Unsupported transport: {transport}. "
345352
f"Must be one of: 'stdio', 'sse', 'websocket', 'streamable_http'"
346353
)
354+
raise ValueError(msg)

langchain_mcp_adapters/tools.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ async def _list_all_tools(session: ClientSession) -> list[MCPTool]:
4747
while True:
4848
iterations += 1
4949
if iterations > MAX_ITERATIONS:
50-
raise RuntimeError("Reached max of 1000 iterations while listing tools.")
50+
msg = "Reached max of 1000 iterations while listing tools."
51+
raise RuntimeError(msg)
5152

5253
list_tools_page_result = await session.list_tools(cursor=current_cursor)
5354

@@ -79,7 +80,8 @@ def convert_mcp_tool_to_langchain_tool(
7980
8081
"""
8182
if session is None and connection is None:
82-
raise ValueError("Either a session or a connection config must be provided")
83+
msg = "Either a session or a connection config must be provided"
84+
raise ValueError(msg)
8385

8486
async def call_tool(
8587
**arguments: dict[str, Any],
@@ -116,7 +118,8 @@ async def load_mcp_tools(
116118
117119
"""
118120
if session is None and connection is None:
119-
raise ValueError("Either a session or a connection config must be provided")
121+
msg = "Either a session or a connection config must be provided"
122+
raise ValueError(msg)
120123

121124
if session is None:
122125
# If a session is not provided, we will create one on the fly
@@ -151,10 +154,11 @@ def _is_injected_arg_type(type_: type) -> bool:
151154
def to_fastmcp(tool: BaseTool) -> FastMCPTool:
152155
"""Convert a LangChain tool to a FastMCP tool."""
153156
if not issubclass(tool.args_schema, BaseModel):
154-
raise ValueError(
157+
msg = (
155158
"Tool args_schema must be a subclass of pydantic.BaseModel. "
156159
"Tools with dict args schema are not supported."
157160
)
161+
raise TypeError(msg)
158162

159163
parameters = tool.tool_call_schema.model_json_schema()
160164
field_definitions = {

pyproject.toml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,6 @@ ignore = [
6969
"SIM117",
7070
"TC002",
7171
"TC003",
72-
"TRY003",
73-
"TRY004",
7472
]
7573

7674

0 commit comments

Comments
 (0)