Skip to content

Commit 75adaae

Browse files
committed
style: ruff format on PR-touched files
CI's Ruff Lint job runs `ruff format --check` on changed files; my local pre-push runs ran `ruff check` only and missed the formatter deltas. No semantic changes — line-wrap, trailing-comma, and string- quote normalization on the six files this PR touches.
1 parent 334fe28 commit 75adaae

6 files changed

Lines changed: 214 additions & 115 deletions

File tree

src/ha_mcp/__main__.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,9 @@ def _get_oauth_client(self) -> "HomeAssistantClient":
8383
logger.error(
8484
f"OAuth token missing HA credentials. Keys present: {list(claims.keys()) if claims else []}"
8585
)
86-
raise HomeAssistantAuthError("No Home Assistant credentials in OAuth token claims")
86+
raise HomeAssistantAuthError(
87+
"No Home Assistant credentials in OAuth token claims"
88+
)
8789

8890
ha_token = claims["ha_token"]
8991

@@ -958,6 +960,7 @@ async def _run_oauth_server(ha_url: str, base_url: str, port: int, path: str) ->
958960
register_browser_landing(mcp, path)
959961

960962
from ha_mcp.settings_ui import register_settings_routes
963+
961964
register_settings_routes(mcp, _server, secret_path=path)
962965

963966
tools = await mcp.list_tools()

src/ha_mcp/settings_ui.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1087,7 +1087,9 @@ async def _restart_addon(request: Request) -> JSONResponse:
10871087
# Supervisor socket misconfigured) and means the restart was
10881088
# never initiated. Falls through to the `httpx.HTTPError`
10891089
# handler below, which returns 502 + CONNECTION_FAILED.
1090-
logger.info("Restart request connection dropped (expected during self-restart)")
1090+
logger.info(
1091+
"Restart request connection dropped (expected during self-restart)"
1092+
)
10911093
return JSONResponse({"success": True, "message": "Restart initiated"})
10921094
except httpx.HTTPError as e:
10931095
logger.exception("Failed to reach Supervisor for restart")
@@ -1182,16 +1184,24 @@ def register_settings_routes(
11821184
mcp.custom_route("/", methods=["GET"])(handlers["root_page"])
11831185
mcp.custom_route("/settings", methods=["GET"])(handlers["settings_page"])
11841186
mcp.custom_route("/api/settings/tools", methods=["GET"])(handlers["get_tools"])
1185-
mcp.custom_route("/api/settings/tools", methods=["POST"])(handlers["save_tools"])
1186-
mcp.custom_route("/api/settings/restart", methods=["POST"])(handlers["restart_addon"])
1187-
mcp.custom_route("/api/settings/info", methods=["GET"])(handlers["settings_info"])
1187+
mcp.custom_route("/api/settings/tools", methods=["POST"])(
1188+
handlers["save_tools"]
1189+
)
1190+
mcp.custom_route("/api/settings/restart", methods=["POST"])(
1191+
handlers["restart_addon"]
1192+
)
1193+
mcp.custom_route("/api/settings/info", methods=["GET"])(
1194+
handlers["settings_info"]
1195+
)
11881196

11891197
if secret_prefix:
11901198
# Mount under the MCP secret path so Docker / standalone clients
11911199
# need the same secret to reach the UI as they do for the MCP
11921200
# endpoint. The frontend uses relative fetches (./api/settings/...)
11931201
# so the JS works at either prefix unchanged.
1194-
mcp.custom_route(f"{secret_prefix}/settings", methods=["GET"])(handlers["settings_page"])
1202+
mcp.custom_route(f"{secret_prefix}/settings", methods=["GET"])(
1203+
handlers["settings_page"]
1204+
)
11951205
mcp.custom_route(f"{secret_prefix}/api/settings/tools", methods=["GET"])(
11961206
handlers["get_tools"]
11971207
)

src/ha_mcp/stdio_settings_sidecar.py

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,11 @@ def _spawn_lock() -> Iterator[bool]:
185185
try:
186186
fd = os.open(lock_path, os.O_RDWR | os.O_CREAT, 0o600)
187187
except OSError:
188-
logger.debug("Cannot open spawn lock file %s; proceeding unlocked", lock_path, exc_info=True)
188+
logger.debug(
189+
"Cannot open spawn lock file %s; proceeding unlocked",
190+
lock_path,
191+
exc_info=True,
192+
)
189193
yield True
190194
return
191195

@@ -212,7 +216,11 @@ def _spawn_lock() -> Iterator[bool]:
212216
yield False
213217
return
214218
except OSError:
215-
logger.debug("fcntl.flock failed on %s; proceeding unlocked", lock_path, exc_info=True)
219+
logger.debug(
220+
"fcntl.flock failed on %s; proceeding unlocked",
221+
lock_path,
222+
exc_info=True,
223+
)
216224
yield True
217225
return
218226
try:
@@ -274,9 +282,7 @@ def maybe_spawn() -> None:
274282
if _existing_sidecar_alive():
275283
url = read_sidecar_url()
276284
if url:
277-
print(
278-
f"ha-mcp settings UI already running at: {url}", file=sys.stderr
279-
)
285+
print(f"ha-mcp settings UI already running at: {url}", file=sys.stderr)
280286
logger.info("Settings UI sidecar already running; skipping spawn.")
281287
return
282288

@@ -472,9 +478,7 @@ async def dispatch(
472478
host_header,
473479
sorted(allowed_hosts),
474480
)
475-
return PlainTextResponse(
476-
"Host header not allowed", status_code=400
477-
)
481+
return PlainTextResponse("Host header not allowed", status_code=400)
478482
if request.method in mutating_methods:
479483
origin = request.headers.get("origin")
480484
if origin is not None and origin not in allowed_origins:
@@ -484,9 +488,7 @@ async def dispatch(
484488
origin,
485489
sorted(allowed_origins),
486490
)
487-
return PlainTextResponse(
488-
"Origin not allowed", status_code=403
489-
)
491+
return PlainTextResponse("Origin not allowed", status_code=403)
490492
response = await call_next(request)
491493
response.headers.setdefault("X-Content-Type-Options", "nosniff")
492494
response.headers.setdefault("Referrer-Policy", "no-referrer")

0 commit comments

Comments
 (0)