линтеры python перенастроены: mypy заменён на pyrefly

- набор правил ruff расширен по канону rp-local-env (ANN, PTH, C90, G и др.),
  в lefthook добавлен job ruff check --fix
- код приведён под новые правила: логирование через %s вместо f-строк,
  os.path заменён на pathlib, run_backup_process и initialize разбиты
  на функции по порогу цикломатической сложности
This commit is contained in:
av
2026-08-22 11:32:03 +03:00
parent 321f6e7b6b
commit bdc319df64
7 changed files with 266 additions and 253 deletions
+38 -1
View File
@@ -9,10 +9,47 @@ dependencies = [
"ansible-lint>=25.12.2",
"croniter>=6.0.0",
"invoke>=2.2.1",
"mypy>=1.19.1",
"pyrefly>=1.2.0",
"requests>=2.32.5",
"ruff>=0.15.2",
"types-croniter>=6.0.0",
"types-requests>=2.32.4.20260107",
"yamllint>=1.37.1",
]
[tool.ruff.lint]
extend-select = [
# Правила, выпавшие из набора по умолчанию в ruff 0.16, но нужные проекту:
# E402 — импорты не в начале файла; A001/A002 — теневание встроенных имён
# аргументами invoke-задач.
"E402",
"A001",
"A002",
# Полная типизация: скрипты уезжают на сервер и правятся редко,
# аннотации — единственная страховка.
"ANN",
# pathlib вместо os.path, отсутствие закомментированного кода, стиль
# pytest и ограничение цикломатической сложности.
"PTH",
"ERA",
"PT",
"C90",
# Наборы, по которым код уже чист: включены, чтобы так и оставалось.
"RET",
"N",
"Q",
"TID",
"G",
"LOG",
"FURB",
"PLC",
]
# Any в сигнатурах используется осознанно: разбор конфигов из TOML
# и параметры сторонних API без стабов типов.
ignore = ["ANN401"]
[tool.pyrefly]
# Без секции pyrefly ругается на отсутствие конфига; здесь же задаём,
# что проверять при запуске без аргументов.
project-includes = ["**/*.py"]
project-excludes = ["**/.venv/**", "**/galaxy.roles/**", "**/__pycache__/**"]