линтеры скриптов: ruff и pyrefly через uv, починены 41 находка
Скрипты остаются на голом python 3.12 без зависимостей: pyproject.toml живёт только в этом репозитории и держит линтеры, а не зависимости скриптов. Ноль зависимостей охраняется дважды: banned-api у ruff ловит частые соблазны по имени, pyrefly видит окружение без ничего и не разрешает любой сторонний импорт. Версии прибиты точно, uv.lock под git: обновление линтера меняет набор находок, а находки правятся руками в скриптах, которые уезжают в чужие проекты. RUF001–003 выключены — весь текст русский, 311 срабатываний из 338 шум. av-dev-backlog исключён: заморожен до удаления, правка без выгоды. Из 41 находки содержательных две: мёртвая ques в check и два места, где find_entry_index может вернуть None прямо в list.pop и range. По ревью там стоит raise, а не continue: тихий пропуск превратил бы сломанный инвариант в отчёт «индексы согласованы». os из tasks.py ушёл целиком, fail() в docs.py объявлен NoReturn. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
[project]
|
||||
name = "dev-skills"
|
||||
version = "0"
|
||||
description = "Маркетплейс плагинов av-dev; здесь только линтеры скриптов скиллов"
|
||||
requires-python = ">=3.12"
|
||||
dependencies = []
|
||||
|
||||
# Версии прибиты точно: обновление линтера меняет набор находок, а находки тут
|
||||
# правятся руками в скриптах, которые уезжают в чужие проекты. Обновление —
|
||||
# отдельная осознанная правка, а не побочный эффект `uv sync`.
|
||||
[dependency-groups]
|
||||
dev = ["ruff==0.16.1", "pyrefly==1.2.0"]
|
||||
|
||||
[tool.uv]
|
||||
package = false
|
||||
|
||||
[tool.ruff]
|
||||
target-version = "py312"
|
||||
line-length = 88
|
||||
# backlog.py заморожен: плагин помечен УСТАРЕЛ и живёт до перевода последнего
|
||||
# проекта, после чего удаляется целиком. Правки в него — риск без выгоды.
|
||||
exclude = ["av-dev-backlog"]
|
||||
|
||||
[tool.ruff.lint]
|
||||
select = [
|
||||
"F", # pyflakes: неиспользованное, неопределённое, битые f-строки
|
||||
"E", "W",# pycodestyle
|
||||
"I", # порядок импортов
|
||||
"UP", # устаревшие для 3.12 конструкции
|
||||
"B", # bugbear: изменяемый дефолт, забытый raise, цикл с замыканием
|
||||
"SIM", # упрощения
|
||||
"RET", # возвраты
|
||||
"PTH", # os.path → pathlib
|
||||
"RUF", # правила самого ruff
|
||||
"TID", # запрет внешних зависимостей, см. banned-api ниже
|
||||
"BLE", # голый except Exception — только там, где помечен noqa
|
||||
]
|
||||
ignore = [
|
||||
"E501", # длину строк держит formatter, а не проверка
|
||||
# Весь текст скриптов — русский: сообщения, докстроки, комментарии.
|
||||
# «Похожая на латиницу кириллица» здесь не опечатка, а норма, и три этих
|
||||
# правила дают 311 срабатываний из 338 на пустом месте.
|
||||
"RUF001", "RUF002", "RUF003",
|
||||
]
|
||||
|
||||
[tool.ruff.lint.flake8-tidy-imports.banned-api]
|
||||
# Скрипты обязаны работать на голом python 3.12 без установки чего-либо:
|
||||
# они лежат рядом со скиллами и запускаются в любом проекте. Список — не
|
||||
# полный перечень мира, а частые соблазны; настоящий страж — pyrefly, у
|
||||
# которого в окружении нет ничего, кроме линтеров.
|
||||
"requests".msg = "внешняя зависимость; скрипты работают на голом python 3.12"
|
||||
"yaml".msg = "внешняя зависимость; для json есть stdlib, для yaml — разбор руками"
|
||||
"pydantic".msg = "внешняя зависимость; скрипты работают на голом python 3.12"
|
||||
"click".msg = "внешняя зависимость; аргументы разбирает argparse"
|
||||
"rich".msg = "внешняя зависимость; вывод — обычный print"
|
||||
|
||||
[tool.ruff.format]
|
||||
quote-style = "double"
|
||||
|
||||
[tool.pyrefly]
|
||||
project-includes = [
|
||||
"av-dev-pm/skills/tasks/scripts/tasks.py",
|
||||
"av-dev-pm/skills/canon/scripts/docs.py",
|
||||
]
|
||||
python-version = "3.12"
|
||||
Reference in New Issue
Block a user