Files
pi-kit/skills/python-standards/SKILL.md
T
dev 489a63be69 docs(skills): set Python=uv and TypeScript=pnpm
- python-standards: uv (uv sync/add, uv.lock committed, run via 'uv run …')
- typescript-standards: pnpm (pnpm install/build/test, pnpm-lock.yaml committed)
- test runner still TODO (vitest/jest)
2026-07-16 13:16:36 +03:00

61 lines
3.6 KiB
Markdown
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.
---
name: python-standards
description: Используй при написании, ревью и проверке кода на Python в наших сервисах — структура проекта, запуск ruff/mypy, тесты, формат коммитов и merge request. Применяй всегда, когда пишешь или правишь Python-код, готовишь MR, а также в командах /bugfix, /feature и /review для Python-репозиториев.
---
# Стандарты Python
Один из наших языков — **Python**. Ниже — общепринятые дефолты экосистемы; специфичное для
компании помечено `TODO` — уточняй, не выдумывай.
## Структура
Ориентир (уточняется под компанию):
```
pyproject.toml
src/<package>/ # src-layout
__init__.py
tests/
```
<!-- TODO: заполнить реальной эталонной структурой / шаблоном (менеджер зависимостей — uv) -->
## Линтеры и форматирование
- Линтер + форматтер: **ruff** — `ruff check .` и `ruff format --check .`
(локально `ruff format .`). Конфиг — в `pyproject.toml` (`[tool.ruff]`).
- Типы: **mypy** — `mypy .` (конфиг `[tool.mypy]`).
<!-- TODO: корпоративный набор правил ruff/mypy (строгость), если есть -->
## Тесты
- Прогон: **pytest** — `pytest` (с покрытием — `pytest --cov`).
- Требования к покрытию / обязательные виды тестов: `<!-- TODO -->`.
## Окружение и зависимости
- Менеджер зависимостей: **uv** — `uv sync` (установка), `uv add <pkg>`; lock `uv.lock` коммитим.
- Команды запускай через `uv run …` (напр. `uv run pytest`, `uv run ruff check .`, `uv run mypy .`).
- Виртуальное окружение (`.venv`) создаёт uv; глобально пакеты не ставим.
## Коммиты и 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 со ссылкой на тикет