- в 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
66 lines
2.7 KiB
TOML
66 lines
2.7 KiB
TOML
[project]
|
||
name = "pet-project-server"
|
||
version = "0.1.0"
|
||
description = "Add your description here"
|
||
readme = "README.md"
|
||
requires-python = ">=3.12"
|
||
dependencies = [
|
||
"ansible>=13.2.0",
|
||
"ansible-lint>=25.12.2",
|
||
"croniter>=6.0.0",
|
||
"invoke>=2.2.1",
|
||
"pyrefly>=1.2.0",
|
||
"requests>=2.32.5",
|
||
"ruff>=0.16.6",
|
||
"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",
|
||
# Современный синтаксис: dict/list вместо typing.Dict/List, `X | None`
|
||
# вместо Optional. Те же места подсвечивает basedpyright в редакторе.
|
||
"UP",
|
||
# Наборы, по которым код уже чист: включены, чтобы так и оставалось.
|
||
"RET",
|
||
"N",
|
||
"Q",
|
||
"TID",
|
||
"G",
|
||
"LOG",
|
||
"FURB",
|
||
"PLC",
|
||
]
|
||
# Any в сигнатурах используется осознанно: разбор конфигов из TOML
|
||
# и параметры сторонних API без стабов типов.
|
||
#
|
||
# EXE001: бит исполняемости в репозитории ничего не решает — скрипты из files/
|
||
# уезжают на сервер через Ansible с явным mode 0755, а tasks.py и scripts/
|
||
# запускаются через inv и python3.
|
||
# TRY004: ValueError в скриптах — это ошибка в написанном руками конфиге
|
||
# (config.toml), а не передача не того типа в API; TypeError вводил бы в
|
||
# заблуждение.
|
||
ignore = ["ANN401", "EXE001", "TRY004"]
|
||
|
||
[tool.pyrefly]
|
||
# Без секции pyrefly ругается на отсутствие конфига; здесь же задаём,
|
||
# что проверять при запуске без аргументов.
|
||
project-includes = ["**/*.py"]
|
||
project-excludes = ["**/.venv/**", "**/galaxy.roles/**", "**/__pycache__/**"]
|