From ed78d50103beb802cbf8471fcdf9e43c02760415 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Tue, 15 Apr 2025 22:31:55 +0200 Subject: [PATCH 1/2] Python lint: Ruff rules for pylint and code complexity --- pyproject.toml | 25 ++++++++++++++++--- src/mcp/server/lowlevel/server.py | 2 +- src/mcp/server/streamable_http.py | 27 ++++++++++----------- tests/shared/test_progress_notifications.py | 2 +- 4 files changed, 36 insertions(+), 20 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 0a11a3b15..5c0a59562 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -91,18 +91,35 @@ venvPath = "." venv = ".venv" strict = ["src/mcp/**/*.py"] -[tool.ruff.lint] -select = ["C4", "E", "F", "I", "PERF", "UP"] -ignore = ["PERF203"] - [tool.ruff] line-length = 88 target-version = "py310" +[tool.ruff.lint] +select = [ + "C4", # flake8-comprehensions + "C90", # mccabe + "E", # pycodestyle + "F", # pyflakes + "I", # isort + "PERF", # Perflint + "PL", # Pylint + "UP", # pyupgrade +] +ignore = ["PERF203", "PLR0402"] +mccabe.max-complexity = 24 # Default is 10 + [tool.ruff.lint.per-file-ignores] "__init__.py" = ["F401"] "tests/server/fastmcp/test_func_metadata.py" = ["E501"] +[tool.ruff.lint.pylint] +allow-magic-value-types = ["bytes", "float", "int", "str"] +max-args = 20 # Default is 5 +max-branches = 23 # Default is 12 +max-returns = 13 # Default is 6 +max-statements = 99 # Default is 50 + [tool.uv.workspace] members = ["examples/servers/*"] diff --git a/src/mcp/server/lowlevel/server.py b/src/mcp/server/lowlevel/server.py index f6d390c2f..70491acc3 100644 --- a/src/mcp/server/lowlevel/server.py +++ b/src/mcp/server/lowlevel/server.py @@ -83,7 +83,7 @@ async def main(): from mcp.server.lowlevel.helper_types import ReadResourceContents from mcp.server.models import InitializationOptions from mcp.server.session import ServerSession -from mcp.server.stdio import stdio_server as stdio_server +from mcp.server.stdio import stdio_server as stdio_server # noqa: PLC0414 from mcp.shared.context import RequestContext from mcp.shared.exceptions import McpError from mcp.shared.message import ServerMessageMetadata, SessionMessage diff --git a/src/mcp/server/streamable_http.py b/src/mcp/server/streamable_http.py index a94cc2834..b19357305 100644 --- a/src/mcp/server/streamable_http.py +++ b/src/mcp/server/streamable_http.py @@ -859,20 +859,19 @@ async def message_router(): if response_id in self._request_streams: target_request_id = response_id - else: - # Extract related_request_id from meta if it exists - if ( - session_message.metadata is not None - and isinstance( - session_message.metadata, - ServerMessageMetadata, - ) - and session_message.metadata.related_request_id - is not None - ): - target_request_id = str( - session_message.metadata.related_request_id - ) + # Extract related_request_id from meta if it exists + elif ( + session_message.metadata is not None + and isinstance( + session_message.metadata, + ServerMessageMetadata, + ) + and session_message.metadata.related_request_id + is not None + ): + target_request_id = str( + session_message.metadata.related_request_id + ) request_stream_id = ( target_request_id diff --git a/tests/shared/test_progress_notifications.py b/tests/shared/test_progress_notifications.py index 1e0409e14..9f17caf20 100644 --- a/tests/shared/test_progress_notifications.py +++ b/tests/shared/test_progress_notifications.py @@ -41,7 +41,7 @@ async def run_server(): capabilities=server.get_capabilities(NotificationOptions(), {}), ), ) as server_session: - global serv_sesh + global serv_sesh # noqa: PLW0603 serv_sesh = server_session async for message in server_session.incoming_messages: From 1596aca4ceb8ea52378ee273b9102e0c36ed24b6 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Tue, 3 Jun 2025 14:40:39 +0200 Subject: [PATCH 2/2] Increase max-statements to 102 (default is 50) --- pyproject.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 5c0a59562..ec01b8d1b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -115,10 +115,10 @@ mccabe.max-complexity = 24 # Default is 10 [tool.ruff.lint.pylint] allow-magic-value-types = ["bytes", "float", "int", "str"] -max-args = 20 # Default is 5 -max-branches = 23 # Default is 12 +max-args = 20 # Default is 5 +max-branches = 23 # Default is 12 max-returns = 13 # Default is 6 -max-statements = 99 # Default is 50 +max-statements = 102 # Default is 50 [tool.uv.workspace] members = ["examples/servers/*"]