core/pyproject.toml

127 lines
8.0 KiB
TOML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[tool.ruff]
line-length = 120 # Максимальная длина строки кода
fix = true # Автоматическое исправление ошибок где возможно
[tool.ruff.lint]
# Включаем автоматическое исправление для всех правил, которые поддерживают это
fixable = ["ALL"]
unfixable = []
# Выбранные правила для проверки кода
select = [
"E", # pycodestyle errors - ошибки стиля кода
"W", # pycodestyle warnings - предупреждения стиля кода
"F", # pyflakes - неиспользуемые импорты, переменные и синтаксические ошибки
"I", # isort - сортировка и группировка импортов
"N", # pep8-naming - соглашения именования PEP 8
"UP", # pyupgrade - обновление синтаксиса до современного Python
"YTT", # flake8-2020 - проверки для Python 2020+
"ANN", # flake8-annotations - проверка аннотаций типов
"S", # bandit - проверки безопасности
"BLE", # flake8-blind-except - избегание слепых except блоков
"FBT", # flake8-boolean-trap - избегание boolean параметров
"B", # flake8-bugbear - обнаружение вероятных багов
"A", # flake8-builtins - избегание переопределения встроенных функций
"C4", # flake8-comprehensions - улучшение list/dict/set comprehensions
"DTZ", # flake8-datetimez - правильная работа с часовыми поясами
"T10", # flake8-debugger - обнаружение отладочных вызовов
"DJ", # flake8-django - специфичные для Django проверки
"EM", # flake8-errmsg - правильное форматирование сообщений об ошибках
"EXE", # flake8-executable - проверка исполняемых файлов
"FA", # flake8-future-annotations - использование future annotations
"ISC", # flake8-implicit-str-concat - неявная конкатенация строк
"ICN", # flake8-import-conventions - соглашения импортов
"G", # flake8-logging-format - форматирование логирования
"INP", # flake8-no-pep420 - проверка __init__.py файлов
"PIE", # flake8-pie - разнообразные улучшения кода
"T20", # flake8-print - избегание print statements
"PYI", # flake8-pyi - проверки для .pyi файлов
"PT", # flake8-pytest-style - стиль pytest тестов
"Q", # flake8-quotes - единообразие кавычек
"RSE", # flake8-raise - правильное использование raise
"RET", # flake8-return - правильное использование return
"SLF", # flake8-self - избегание доступа к приватным членам
"SLOT", # flake8-slots - использование __slots__
"SIM", # flake8-simplify - упрощение кода
"TID", # flake8-tidy-imports - организация импортов
"INT", # flake8-gettext - интернационализация
"ARG", # flake8-unused-arguments - неиспользуемые аргументы
"PTH", # flake8-use-pathlib - использование pathlib вместо os.path
"TD", # flake8-todos - проверка TODO комментариев
"PD", # pandas-vet - лучшие практики pandas
"PGH", # pygrep-hooks - общие проверки с помощью grep
"PL", # pylint - расширенные проверки качества кода
"TRY", # tryceratops - улучшение обработки исключений
"FLY", # flynt - преобразование в f-strings
"NPY", # numpy specific rules - правила для numpy
"AIR", # airflow - правила для Apache Airflow
"PERF", # perflint - проверки производительности
"FURB", # refurb - рефакторинг предложения
"LOG", # flake8-logging - правильное логирование
"RUF", # ruff specific rules - специфичные правила ruff
]
# Игнорируемые правила (в основном конфликтующие с форматтером)
ignore = [
"COM812", # trailing-comma-missing - конфликтует с форматтером
"COM819", # trailing-comma-prohibited -
"ISC001", # single-line-implicit-string-concatenation -
"ISC002", # multi-line-implicit-string-concatenation -
"Q000", # bad-quotes-inline-string -
"Q001", # bad-quotes-multiline-string -
"Q002", # bad-quotes-docstring -
"Q003", # avoidable-escaped-quote -
"W191", # tab-indentation -
"E111", # indentation-with-invalid-multiple -
"E114", # indentation-with-invalid-multiple-comment -
"E117", # over-indented -
"D206", # indent-with-spaces -
"D300", # triple-single-quotes -
"E501", # line-too-long - используем line-length вместо этого правила
# Игнорируем некоторые строгие правила для удобства разработки
"ANN401", # Dynamically typed expressions (Any) - иногда нужно
"S101", # assert statements - нужно в тестах
"T201", # print statements - нужно для отладки
"PLR2004", # Magic values - иногда допустимо
"RUF001", # ambiguous unicode characters - для кириллицы
"RUF002", # ambiguous unicode characters in docstrings - для кириллицы
"RUF003", # ambiguous unicode characters in comments - для кириллицы
]
# Настройки для отдельных директорий
[tool.ruff.lint.per-file-ignores]
# Тесты - более мягкие правила
"tests/**/*.py" = [
"S101", # assert statements - нормально в тестах
"PLR2004", # magic values - нормально в тестах
"ANN", # type annotations - не обязательно в тестах
"EXE001", # shebang without executable - нормально для тестовых скриптов
"PTH100", # os.path usage - допустимо в тестах
"PTH120", # os.path.dirname - допустимо в тестах
"BLE001", # blind except - допустимо в тестах
"T201", # print statements - нормально в тестах
"F841", # unused variables - нормально в тестах
"ARG001", # unused arguments - нормально в тестах
"DTZ005", # datetime without tz - допустимо в тестах
]
# Утилиты - более мягкие правила для аннотаций
"utils/**/*.py" = [
"T201", # print statements - иногда нужно в утилитах
"A001", # builtin shadowing - иногда нужно
"F841", # unused variables - иногда остаются при рефакторинге
"RET503", # missing return - иногда допустимо
"ARG001", # unused arguments - иногда для совместимости API
]
# Миграции Alembic
"alembic/**/*.py" = [
"ANN", # type annotations - не нужно в миграциях
"INP001", # missing __init__.py - нормально для alembic
]
[tool.ruff.lint.isort]
# Настройки для сортировки импортов
known-first-party = ["auth", "cache", "orm", "resolvers", "services", "utils", "schema", "settings"]
section-order = ["future", "standard-library", "third-party", "first-party", "local-folder"]