Skip to content

Commit 69c897a

Browse files
committed
fix: remove unnecessary pragmas from src/ (batch 1) and use lax for flaky tests
- Remove unnecessary '# pragma: no cover' from 15 src/ files where lines are confirmed covered by CI - Switch flaky test pragmas to '# pragma: lax no cover' for lines that are sometimes covered and sometimes not across CI runs
1 parent c14186b commit 69c897a

File tree

20 files changed

+46
-47
lines changed

20 files changed

+46
-47
lines changed

src/mcp/cli/claude.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ def update_claude_config(
7272
)
7373

7474
config_file = config_dir / "claude_desktop_config.json"
75-
if not config_file.exists(): # pragma: no cover
75+
if not config_file.exists():
7676
try:
7777
config_file.write_text("{}")
7878
except Exception:

src/mcp/cli/cli.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ def _build_uv_command(
7777

7878
if with_packages:
7979
for pkg in with_packages:
80-
if pkg: # pragma: no cover
80+
if pkg:
8181
cmd.extend(["--with", pkg])
8282

8383
# Add mcp run command

src/mcp/client/auth/oauth2.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ def prepare_token_auth(
192192
headers = {} # pragma: no cover
193193

194194
if not self.client_info:
195-
return data, headers # pragma: no cover
195+
return data, headers
196196

197197
auth_method = self.client_info.token_endpoint_auth_method
198198

@@ -418,7 +418,7 @@ async def _refresh_token(self) -> httpx.Request:
418418
raise OAuthTokenError("No client info available") # pragma: no cover
419419

420420
if self.context.oauth_metadata and self.context.oauth_metadata.token_endpoint:
421-
token_url = str(self.context.oauth_metadata.token_endpoint) # pragma: no cover
421+
token_url = str(self.context.oauth_metadata.token_endpoint)
422422
else:
423423
auth_base_url = self.context.get_authorization_base_url(self.context.server_url)
424424
token_url = urljoin(auth_base_url, "/token")
@@ -534,7 +534,7 @@ async def async_auth_flow(self, request: httpx.Request) -> AsyncGenerator[httpx.
534534
)
535535

536536
# Step 2: Discover OAuth Authorization Server Metadata (OASM) (with fallback for legacy servers)
537-
for url in asm_discovery_urls: # pragma: no cover
537+
for url in asm_discovery_urls:
538538
oauth_metadata_request = create_oauth_metadata_request(url)
539539
oauth_metadata_response = yield oauth_metadata_request
540540

src/mcp/client/session.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ async def set_logging_level(
250250
meta: RequestParamsMeta | None = None,
251251
) -> types.EmptyResult:
252252
"""Send a logging/setLevel request."""
253-
return await self.send_request( # pragma: no cover
253+
return await self.send_request(
254254
types.SetLevelRequest(params=types.SetLevelRequestParams(level=level, _meta=meta)),
255255
types.EmptyResult,
256256
)
@@ -285,14 +285,14 @@ async def read_resource(self, uri: str, *, meta: RequestParamsMeta | None = None
285285

286286
async def subscribe_resource(self, uri: str, *, meta: RequestParamsMeta | None = None) -> types.EmptyResult:
287287
"""Send a resources/subscribe request."""
288-
return await self.send_request( # pragma: no cover
288+
return await self.send_request(
289289
types.SubscribeRequest(params=types.SubscribeRequestParams(uri=uri, _meta=meta)),
290290
types.EmptyResult,
291291
)
292292

293293
async def unsubscribe_resource(self, uri: str, *, meta: RequestParamsMeta | None = None) -> types.EmptyResult:
294294
"""Send a resources/unsubscribe request."""
295-
return await self.send_request( # pragma: no cover
295+
return await self.send_request(
296296
types.UnsubscribeRequest(params=types.UnsubscribeRequestParams(uri=uri, _meta=meta)),
297297
types.EmptyResult,
298298
)
@@ -344,7 +344,7 @@ async def _validate_tool_result(self, name: str, result: types.CallToolResult) -
344344
try:
345345
validate(result.structured_content, output_schema)
346346
except ValidationError as e:
347-
raise RuntimeError(f"Invalid structured content returned by tool {name}: {e}") # pragma: no cover
347+
raise RuntimeError(f"Invalid structured content returned by tool {name}: {e}")
348348
except SchemaError as e: # pragma: no cover
349349
raise RuntimeError(f"Invalid schema for tool {name}: {e}") # pragma: no cover
350350

src/mcp/client/session_group.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ async def disconnect_from_server(self, session: mcp.ClientSession) -> None:
223223
)
224224
)
225225

226-
if session_known_for_components: # pragma: no cover
226+
if session_known_for_components:
227227
component_names = self._sessions.pop(session) # Pop from _sessions tracking
228228

229229
# Remove prompts associated with the session.

src/mcp/client/sse.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -119,12 +119,12 @@ async def sse_reader(task_status: TaskStatus[str] = anyio.TASK_STATUS_IGNORED):
119119
await read_stream_writer.send(session_message)
120120
case _: # pragma: no cover
121121
logger.warning(f"Unknown SSE event: {sse.event}") # pragma: no cover
122-
except SSEError as sse_exc: # pragma: no cover
123-
logger.exception("Encountered SSE exception") # pragma: no cover
124-
raise sse_exc # pragma: no cover
125-
except Exception as exc: # pragma: no cover
126-
logger.exception("Error in sse_reader") # pragma: no cover
127-
await read_stream_writer.send(exc) # pragma: no cover
122+
except SSEError as sse_exc:
123+
logger.exception("Encountered SSE exception")
124+
raise sse_exc
125+
except Exception as exc:
126+
logger.exception("Error in sse_reader")
127+
await read_stream_writer.send(exc)
128128
finally:
129129
await read_stream_writer.aclose()
130130

@@ -143,8 +143,8 @@ async def post_writer(endpoint_url: str):
143143
)
144144
response.raise_for_status()
145145
logger.debug(f"Client message sent successfully: {response.status_code}")
146-
except Exception: # pragma: no cover
147-
logger.exception("Error in post_writer") # pragma: no cover
146+
except Exception:
147+
logger.exception("Error in post_writer")
148148
finally:
149149
await write_stream.aclose()
150150

src/mcp/server/auth/handlers/token.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ async def handle(self, request: Request):
178178
except TokenError as e:
179179
return self.response(TokenErrorResponse(error=e.error, error_description=e.error_description))
180180

181-
case RefreshTokenRequest(): # pragma: no cover
181+
case RefreshTokenRequest():
182182
refresh_token = await self.provider.load_refresh_token(client_info, token_request.refresh_token)
183183
if refresh_token is None or refresh_token.client_id != token_request.client_id:
184184
# if token belongs to different client, pretend it doesn't exist

src/mcp/server/auth/middleware/client_auth.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
class AuthenticationError(Exception):
1515
def __init__(self, message: str):
16-
self.message = message # pragma: no cover
16+
self.message = message
1717

1818

1919
class ClientAuthenticator:
@@ -98,13 +98,13 @@ async def authenticate_request(self, request: Request) -> OAuthClientInformation
9898
# that secret
9999
if client.client_secret: # pragma: no branch
100100
if not request_client_secret:
101-
raise AuthenticationError("Client secret is required") # pragma: no cover
101+
raise AuthenticationError("Client secret is required")
102102

103103
# hmac.compare_digest requires that both arguments are either bytes or a `str` containing
104104
# only ASCII characters. Since we do not control `request_client_secret`, we encode both
105105
# arguments to bytes.
106106
if not hmac.compare_digest(client.client_secret.encode(), request_client_secret.encode()):
107-
raise AuthenticationError("Invalid client_secret") # pragma: no cover
107+
raise AuthenticationError("Invalid client_secret")
108108

109109
if client.client_secret_expires_at and client.client_secret_expires_at < int(time.time()):
110110
raise AuthenticationError("Client secret has expired") # pragma: no cover

src/mcp/server/fastmcp/resources/types.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ class FileResource(Resource):
124124

125125
@pydantic.field_validator("path")
126126
@classmethod
127-
def validate_absolute_path(cls, path: Path) -> Path: # pragma: no cover
127+
def validate_absolute_path(cls, path: Path) -> Path:
128128
"""Ensure path is absolute."""
129129
if not path.is_absolute():
130130
raise ValueError("Path must be absolute")

src/mcp/server/fastmcp/server.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -873,7 +873,7 @@ async def handle_sse(scope: Scope, receive: Receive, send: Send): # pragma: no
873873
app=RequireAuthMiddleware(sse.handle_post_message, required_scopes, resource_metadata_url),
874874
)
875875
)
876-
else: # pragma: no cover
876+
else:
877877
# Auth is disabled, no need for RequireAuthMiddleware
878878
# Since handle_sse is an ASGI app, we need to create a compatible endpoint
879879
async def sse_endpoint(request: Request) -> Response:

0 commit comments

Comments
 (0)