deps: ruff обновлён до 0.16, код приведён к новому набору правил

- в 0.16 расширился набор правил по умолчанию: 29 срабатываний там, где 0.15
  давал "All checks passed"
- subprocess.run без явного check (PLW1510) — проставлен check=False там, где
  код и так разбирает returncode сам
- слепые except Exception в оркестраторе бэкапов и скриптах помечены
  noqa: BLE001 с объяснением, почему перехват намеренно широкий
- EXE001 и TRY004 отключены в pyproject: бит исполняемости в репозитории
  ничего не решает, а ValueError при разборе config.toml — про содержимое
  конфига, а не про тип аргумента
- ruff format в 0.16 форматирует python внутри markdown, из-за чего
  переформатирован пример в docs/drafts/gitea-runner-on-demand.md
This commit is contained in:
av
2026-09-06 17:33:22 +03:00
parent 7c57574723
commit 560fd2cc66
8 changed files with 69 additions and 48 deletions
+11 -4
View File
@@ -129,7 +129,7 @@ def edit_encrypted(ctx: Context, path: str) -> None:
# переводит лишь в cbreak — ixon остаётся включённым, и Ctrl+S/Ctrl+Q съедает
# драйвер терминала как XOFF/XON, до редактора они не доходят. subprocess
# отдаёт редактору настоящий tty, и его raw-режим гасит ixon сам.
result = subprocess.run(["uv", "run", "ansible-vault", "edit", path])
result = subprocess.run(["uv", "run", "ansible-vault", "edit", path], check=False)
if result.returncode != 0:
raise Exit(
f"ansible-vault edit: код возврата {result.returncode}",
@@ -173,7 +173,10 @@ def roles_status(ctx: Context) -> None:
print(f"{role}: missing in shared")
drift = True
elif (
subprocess.run(["diff", "-rq", f"roles/{role}", str(canon)]).returncode != 0
subprocess.run(
["diff", "-rq", f"roles/{role}", str(canon)], check=False
).returncode
!= 0
):
print(f"{role}: differs")
drift = True
@@ -206,11 +209,14 @@ def roles_push(ctx: Context) -> None:
raise Exit(f"Локальной роли нет: {local}", code=1)
differs = (
canon.is_dir()
and subprocess.run(["diff", "-rq", str(local), str(canon)]).returncode != 0
and subprocess.run(
["diff", "-rq", str(local), str(canon)], check=False
).returncode
!= 0
)
if differs:
# Защита от затирания более свежего канона устаревшей копией.
subprocess.run(["diff", "-r", str(canon), str(local)])
subprocess.run(["diff", "-r", str(canon), str(local)], check=False)
answer = input(
f"Канон '{role}' отличается. Перезаписать его копией из этого репо? [y/N] "
)
@@ -252,6 +258,7 @@ def login_as_app(ctx: Context, app: str) -> None:
subprocess.run(
f"""ssh {_remote_user()}@{_remote_host()} -t 'sudo -iu {app} bash -c "cd {app_dir} && exec bash -il"'""",
shell=True,
check=False,
)