Per decision to use common industry practice now and tune later: - structures: standard layouts (go cmd/internal/pkg, python src-layout, rust cargo, ts pnpm workspaces, kotlin Gradle modules, swift SwiftPM) - linters: default rulesets (golangci base, clippy -D warnings, ruff+mypy, typescript-eslint+prettier, ktlint+detekt, swiftlint+swiftformat) - test runners: TS=vitest; coverage soft targets (~70-80%) marked '(пороги уточним)' - swift deps: SwiftPM (Package.resolved), CocoaPods legacy-only - reworded intros: values are industry defaults to be tuned, no raw TODO markers left Verified: no TODO markers remain in *-standards; all six skills load via pi.
3.6 KiB
3.6 KiB
name, description
| name | description |
|---|---|
| python-standards | Используй при написании, ревью и проверке кода на Python в наших сервисах — структура проекта, запуск ruff/mypy, тесты, формат коммитов и merge request. Применяй всегда, когда пишешь или правишь Python-код, готовишь MR, а также в командах /bugfix, /feature и /review для Python-репозиториев. |
Стандарты Python
Один из наших языков — Python. Ниже — общепринятые дефолты экосистемы; специфичное для компании заполнено дефолтами индустрии — тюним под M.Video позже.
Структура
Ориентир (уточняется под компанию):
pyproject.toml
src/<package>/ # src-layout
__init__.py
tests/
Ориентир: src-layout,
pyproject.toml, окружение через uv. Эталон уточним.
Линтеры и форматирование
- Линтер + форматтер: ruff —
ruff check .иruff format --check .(локальноruff format .). Конфиг — вpyproject.toml([tool.ruff]). - Типы: mypy —
mypy .(конфиг[tool.mypy]). Дефолт: ruff (правилаE,F,I,UP,B) + mypy строгий для нового кода. Корпоративный пресет уточним.
Тесты
- Прогон: pytest —
pytest(с покрытием —pytest --cov). - Покрытие:
uv run pytest --cov, мягкий ориентир ~80% для бизнес-логики. (пороги уточним)
Окружение и зависимости
- Менеджер зависимостей: uv —
uv sync(установка),uv add <pkg>; lockuv.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 со ссылкой на тикет