[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.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", # Современный синтаксис: dict/list вместо typing.Dict/List, `X | None` # вместо Optional. Те же места подсвечивает basedpyright в редакторе. "UP", # Наборы, по которым код уже чист: включены, чтобы так и оставалось. "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__/**"]