--- name: python-standards description: Используй при написании, ревью и проверке кода на Python в наших сервисах — структура проекта, запуск ruff/mypy, тесты, формат коммитов и merge request. Применяй всегда, когда пишешь или правишь Python-код, готовишь MR, а также в командах /bugfix, /feature и /review для Python-репозиториев. --- # Стандарты Python Один из наших языков — **Python**. Ниже — общепринятые дефолты экосистемы; специфичное для компании помечено `TODO` — уточняй, не выдумывай. ## Структура Ориентир (уточняется под компанию): ``` pyproject.toml src// # src-layout __init__.py tests/ ``` ## Линтеры и форматирование - Линтер + форматтер: **ruff** — `ruff check .` и `ruff format --check .` (локально `ruff format .`). Конфиг — в `pyproject.toml` (`[tool.ruff]`). - Типы: **mypy** — `mypy .` (конфиг `[tool.mypy]`). ## Тесты - Прогон: **pytest** — `pytest` (с покрытием — `pytest --cov`). - Требования к покрытию / обязательные виды тестов: ``. ## Окружение и зависимости - Менеджер зависимостей и lock: `` — lock коммитим. - Виртуальное окружение — обязательно; глобально пакеты не ставим. ## Коммиты и MR - **Формат коммитов:** Conventional Commits (`feat:`, `fix:`, `chore:`, `docs:`, `refactor:`, `test:` …). - **Ветки и деплой:** фича-ветки — от `main` (в имя ветки желательно включать ключ тикета). Деплой управляется ветками/тегами: ветка `release-*` → раскатка на **stage**; тег `v*` → раскатка в **прод**. Ветки `release-*` и теги `v*` без необходимости не пушь — `permission-gate` переспросит. - **MR обязателен** (см. корпоративные правила из контекста сессии). Прямой push в защищённые ветки запрещён — расширение `permission-gate` дополнительно переспросит. - Перед MR: `ruff check .`, `ruff format --check .`, `mypy .`, `pytest` — всё зелёное. - Описание MR: что и зачем, как проверено, ссылка на тикет (скилл `jira-workflow`). ## Чек-лист перед MR - [ ] `ruff check .` чисто - [ ] `ruff format --check .` чисто - [ ] `mypy .` чисто - [ ] `pytest` зелёные, есть тесты на новую логику / фикс - [ ] нет секретов и закоммиченных `.env` - [ ] описание MR со ссылкой на тикет