Skip to content

Commit 9950d07

Browse files
committed
fix: remove unnecessary pragmas from src/ (batch 2) and restore needed ones
- Remove ~80 unnecessary '# pragma: no cover' from src/ files where lines are confirmed covered by CI - Restore pragmas with correct type (no cover vs no branch) for lines with missing coverage or branch coverage in batch 1 files
1 parent 69c897a commit 9950d07

File tree

17 files changed

+74
-76
lines changed

17 files changed

+74
-76
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():
75+
if not config_file.exists(): # pragma: no cover
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:
80+
if pkg: # pragma: no branch
8181
cmd.extend(["--with", pkg])
8282

8383
# Add mcp run command

src/mcp/client/auth/oauth2.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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:
537+
for url in asm_discovery_urls: # pragma: no branch
538538
oauth_metadata_request = create_oauth_metadata_request(url)
539539
oauth_metadata_response = yield oauth_metadata_request
540540

src/mcp/client/session_group.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -223,22 +223,22 @@ async def disconnect_from_server(self, session: mcp.ClientSession) -> None:
223223
)
224224
)
225225

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

229229
# Remove prompts associated with the session.
230230
for name in component_names.prompts:
231-
if name in self._prompts:
231+
if name in self._prompts: # pragma: no branch
232232
del self._prompts[name]
233233
# Remove resources associated with the session.
234234
for name in component_names.resources:
235-
if name in self._resources:
235+
if name in self._resources: # pragma: no branch
236236
del self._resources[name]
237237
# Remove tools associated with the session.
238238
for name in component_names.tools:
239-
if name in self._tools:
239+
if name in self._tools: # pragma: no branch
240240
del self._tools[name]
241-
if name in self._tool_to_session:
241+
if name in self._tool_to_session: # pragma: no branch
242242
del self._tool_to_session[name]
243243

244244
# Clean up the session's resources via its dedicated exit stack

src/mcp/client/sse.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,10 +119,10 @@ 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:
122+
except SSEError as sse_exc: # pragma: no cover
123123
logger.exception("Encountered SSE exception")
124124
raise sse_exc
125-
except Exception as exc:
125+
except Exception as exc: # pragma: no cover
126126
logger.exception("Error in sse_reader")
127127
await read_stream_writer.send(exc)
128128
finally:
@@ -143,7 +143,7 @@ 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:
146+
except Exception: # pragma: no cover
147147
logger.exception("Error in post_writer")
148148
finally:
149149
await write_stream.aclose()

src/mcp/client/stdio/__init__.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ def get_default_environment() -> dict[str, str]:
5757
for key in DEFAULT_INHERITED_ENV_VARS:
5858
value = os.environ.get(key)
5959
if value is None:
60-
continue # pragma: no cover
60+
continue
6161

6262
if value.startswith("()"): # pragma: no cover
6363
# Skip functions, which are a security risk
@@ -158,7 +158,7 @@ async def stdout_reader():
158158

159159
session_message = SessionMessage(message)
160160
await read_stream_writer.send(session_message)
161-
except anyio.ClosedResourceError: # pragma: no cover
161+
except anyio.ClosedResourceError:
162162
await anyio.lowlevel.checkpoint()
163163

164164
async def stdin_writer():
@@ -226,7 +226,7 @@ def _get_executable_command(command: str) -> str:
226226
if sys.platform == "win32": # pragma: no cover
227227
return get_windows_executable_command(command)
228228
else:
229-
return command # pragma: no cover
229+
return command
230230

231231

232232
async def _create_platform_compatible_process(
@@ -250,7 +250,7 @@ async def _create_platform_compatible_process(
250250
stderr=errlog,
251251
cwd=cwd,
252252
start_new_session=True,
253-
) # pragma: no cover
253+
)
254254

255255
return process
256256

@@ -267,7 +267,7 @@ async def _terminate_process_tree(process: Process | FallbackProcess, timeout_se
267267
"""
268268
if sys.platform == "win32": # pragma: no cover
269269
await terminate_windows_process_tree(process, timeout_seconds)
270-
else: # pragma: no cover
270+
else:
271271
# FallbackProcess should only be used for Windows compatibility
272272
assert isinstance(process, Process)
273273
await terminate_posix_process_tree(process, timeout_seconds)

src/mcp/client/streamable_http.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ async def handle_get_stream(self, client: httpx.AsyncClient, read_stream_writer:
181181

182182
headers = self._prepare_headers()
183183
if last_event_id:
184-
headers[LAST_EVENT_ID] = last_event_id # pragma: no cover
184+
headers[LAST_EVENT_ID] = last_event_id
185185

186186
async with aconnect_sse(client, "GET", self.url, headers=headers) as event_source:
187187
event_source.response.raise_for_status()
@@ -190,17 +190,17 @@ async def handle_get_stream(self, client: httpx.AsyncClient, read_stream_writer:
190190
async for sse in event_source.aiter_sse():
191191
# Track last event ID for reconnection
192192
if sse.id:
193-
last_event_id = sse.id # pragma: no cover
193+
last_event_id = sse.id
194194
# Track retry interval from server
195195
if sse.retry is not None:
196-
retry_interval_ms = sse.retry # pragma: no cover
196+
retry_interval_ms = sse.retry
197197

198198
await self._handle_sse_event(sse, read_stream_writer)
199199

200200
# Stream ended normally (server closed) - reset attempt counter
201201
attempt = 0
202202

203-
except Exception as exc: # pragma: no cover
203+
except Exception as exc:
204204
logger.debug(f"GET stream error: {exc}")
205205
attempt += 1
206206

@@ -333,7 +333,7 @@ async def _handle_sse_response(
333333
if is_complete:
334334
await response.aclose()
335335
return # Normal completion, no reconnect needed
336-
except Exception as e: # pragma: no cover
336+
except Exception as e:
337337
logger.debug(f"SSE stream ended: {e}")
338338

339339
# Stream ended without response - reconnect if we received an event with ID
@@ -472,7 +472,7 @@ async def handle_request_async():
472472
await read_stream_writer.aclose()
473473
await write_stream.aclose()
474474

475-
async def terminate_session(self, client: httpx.AsyncClient) -> None: # pragma: no cover
475+
async def terminate_session(self, client: httpx.AsyncClient) -> None:
476476
"""Terminate the session by sending a DELETE request."""
477477
if not self.session_id:
478478
return

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():
181+
case RefreshTokenRequest(): # pragma: no branch
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/experimental/task_context.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -247,8 +247,7 @@ async def elicit(
247247
response_data = await resolver.wait()
248248
await self._store.update_task(self.task_id, status=TASK_STATUS_WORKING)
249249
return ElicitResult.model_validate(response_data)
250-
except anyio.get_cancelled_exc_class(): # pragma: no cover
251-
# Coverage can't track async exception handlers reliably.
250+
except anyio.get_cancelled_exc_class():
252251
# This path is tested in test_elicit_restores_status_on_cancellation
253252
# which verifies status is restored to "working" after cancellation.
254253
await self._store.update_task(self.task_id, status=TASK_STATUS_WORKING)
@@ -408,8 +407,7 @@ async def create_message(
408407
response_data = await resolver.wait()
409408
await self._store.update_task(self.task_id, status=TASK_STATUS_WORKING)
410409
return CreateMessageResult.model_validate(response_data)
411-
except anyio.get_cancelled_exc_class(): # pragma: no cover
412-
# Coverage can't track async exception handlers reliably.
410+
except anyio.get_cancelled_exc_class():
413411
# This path is tested in test_create_message_restores_status_on_cancellation
414412
# which verifies status is restored to "working" after cancellation.
415413
await self._store.update_task(self.task_id, status=TASK_STATUS_WORKING)

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:
876+
else: # pragma: no cover
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)