Проект: {PROJECT_NAME}
Последнее обновление: {ДАТА}
Спасибо за интерес к проекту {PROJECT_NAME}! Мы рады любому вкладу.
# Fork проекта на GitHub
# Затем клонировать
git clone https://github.com/YOUR_USERNAME/{PROJECT_NAME}.git
cd {PROJECT_NAME}
# Создать venv
python -m venv venv
source venv/bin/activate
# Установить зависимости
pip install -r requirements.txt
pip install -r requirements-dev.txt # dev зависимости
# Настроить pre-commit hooks
pre-commit install
git checkout -b feature/my-awesome-feature
См. CODE-GUIDE.md для стандартов кодирования.
# Запустить тесты
pytest
# С покрытием
pytest --cov=modules
# Coverage должен быть >= 70%
git add .
git commit -m "feat: add awesome feature"
См. Формат коммитов ниже.
git push origin feature/my-awesome-feature
Откройте Pull Request на GitHub.
Как сообщить:
1. Проверить нет ли уже такого issue
2. Создать новый issue с шаблоном "Bug Report"
3. Описать:
- Что ожидалось
- Что произошло
- Как воспроизвести
- Версия проекта
Как предложить:
1. Создать issue с шаблоном "Feature Request"
2. Описать:
- Какую проблему решает
- Предлагаемое решение
- Альтернативы
Что можно улучшить:
- Опечатки
- Неясные объяснения
- Новые примеры
- Переводы
Что приветствуется:
- Bug fixes
- Новые features (после обсуждения в issue)
- Рефакторинг
- Тесты
- Performance improvements
main (защищён)
│
├─ develop
│ │
│ ├─ feature/new-feature
│ ├─ fix/bug-fix
│ └─ refactor/code-improvement
│
└─ hotfix/critical-bug
Правила:
- main - production, только releases
- develop - разработка
- feature/* - новые фичи
- fix/* - bug fixes
- hotfix/* - критичные fixes для production
developdevelopConventional Commits:
<type>(<scope>): <subject>
<body>
<footer>
Types:
- feat: Новая функция
- fix: Исправление бага
- docs: Документация
- style: Форматирование (не меняет код)
- refactor: Рефакторинг
- test: Добавление тестов
- chore: Рутинные задачи
Примеры:
feat(auth): add OAuth2 login
Implemented OAuth2 login flow using Google provider.
Closes #123
fix(orders): correct total price calculation
Fixed bug where tax was not included in total.
Fixes #456
docs(readme): update installation instructions
Added troubleshooting section for common errors.
Python:
- PEP 8
- Black formatter
- isort для imports
- Type hints обязательны
- Docstrings для функций
Проверка:
# Format
black modules/
isort modules/
# Lint
flake8 modules/
mypy modules/
Требования:
- Новый код = новые тесты
- Coverage >= 70%
- Все тесты проходят
Структура:
def test_function_name_expected_behavior():
"""Test that function does X when Y"""
# Arrange
input_data = {...}
# Act
result = function(input_data)
# Assert
assert result == expected
Функциональность:
- [ ] Код работает как задумано
- [ ] Нет багов
- [ ] Edge cases обработаны
Качество:
- [ ] Читаемый код
- [ ] Нет дублирования
- [ ] Следует стандартам
Тесты:
- [ ] Новый код покрыт тестами
- [ ] Тесты проходят
- [ ] Coverage не упал
Документация:
- [ ] Docstrings добавлены
- [ ] README обновлён (если нужно)
- [ ] CHANGELOG обновлён
✅ Хорошо:
Предлагаю использовать list comprehension для читаемости:
`users = [u for u in all_users if u.is_active]`
❌ Плохо:
Этот код ужасен, переписывай!
Q: С чего начать если я новичок?
A: Смотрите issues с меткой good first issue.
Q: Как долго ждать review PR?
A: Обычно 1-3 дня.
Q: Нужно ли обсуждать feature перед реализацией?
A: Да, создайте issue для обсуждения.
Q: Какие ветки использовать?
A: feature/* для новых фич, fix/* для багов.
Спасибо всем кто внёс вклад!
Спасибо за ваш вклад в {PROJECT_NAME}! 🎉