Контрибьютинг в проект eebook¶
Добро пожаловать в гайд для контрибьюторов! Здесь описано, как правильно участвовать в разработке проекта, чтобы код был чистым, тестируемым и соответствовал стандартам.
1. Общие правила¶
- Все изменения проходят через Pull Request.
- Перед PR необходимо обновить локальную ветку с main:
PR должен быть маленьким и логически завершённым. Все публичные методы и классы должны иметь докстринги. Соблюдаем PEP8 / PSR-12 и типизацию. Перед PR выполняем тесты и линтинг:
git checkout feature/your-feature git fetch origin git rebase origin/mainpre-commit run --all-files pytest --cov=src
2. Ветка и коммиты¶
-
Каждая новая фича/исправление в своей ветке:
feature/<короткое-описание> bugfix/<короткое-описание> -
Коммиты в формате Conventional Commits:
Коммиты атомарные: одна логическая задача = один коммит.feat(auth): add JWT authentication fix(portfolio): correct income calculation docs: update API docs refactor(service_layer): simplify calculation logic
3. Pull Request¶
- Название PR — краткое описание фичи или исправления.
- В описании указываем:
-
- Что сделано
-
- Ссылки на задачи/тикеты
-
- Что проверено вручную/тестами
- PR должен пройти Code Review хотя бы одного разработчика.
- После approval — merge через Squash and Merge или Rebase (по договорённости команды).
4. Тестирование изменений¶
- Любая бизнес-логика должна быть покрыта unit-тестами.
- Используем pytest, фикстуры для повторного использования данных.
- Для работы с внешними сервисами (DB, Vault) используем mocking / fixtures.
- Проверяем покрытие: минимум 60% для мержей в main.
5. Документация изменений¶
- Если добавлена новая публичная функция или класс — пишем докстринги.
- Если API изменилось — обновляем API-документацию (MkDocs + mkdocstrings).
- README или другие гайды обновляем при необходимости.
6. Стиль и лучшие практики¶
- Clean Architecture / DDD: соблюдаем слои, зависимости внутрь.
- KISS и DRY: простота и отсутствие дублирования.
- Минимизируем побочные эффекты: функции и методы должны быть детерминированными.
- Логика бизнес-сущностей только в domain / service_layer.
- Работа с внешними системами через адаптеры (adapters) и интерфейсы.
7. Общение и помощь¶
- Вопросы по проекту — через тикеты или internal чат.
- Не стесняемся делать маленькие PR и спрашивать советы.
- Все участники следят за единообразием кода и архитектуры.
Совет: перед любым PR сначала проверьте, что линтер не ругается, тесты проходят, и все слои архитектуры соблюдены.