Участие в проекте¶
EndoCore — молодой, сфокусированный проект. Вклады, сохраняющие его маленьким, безопасным и читаемым, очень приветствуются.
Настройка окружения¶
git clone https://github.com/Drakulyonok/endocore
cd endocore
python -m venv .venv && . .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[postgres,files,redis,celery,pydantic,watch]"
pip install pytest
pytest -q # 1600+ тестов
Принципы, которые нужно уважать¶
- У ядра одна зависимость (
uvicorn). Новые возможности, требующие библиотеку, идут за опциональной экстрой и импортируются лениво. - Безопасность — умолчание. Значения в ORM всегда биндятся; идентификаторы валидируются и квотируются; lookup'ы — по белому списку. Никогда не собирайте SQL форматированием строк.
- Endpoint'ы остаются тонкими. Логике место в сервисах.
- Всё тестируется. Добавляйте тесты с каждым изменением; набор выполняется за секунды и использует SQLite in-memory.
Как запускать¶
pytest -q # все тесты
pytest tests/orm -q # подмножество
py -3 benchmarks/bench.py # бенчмарк диспатча
mkdocs serve # локальный предпросмотр документации
Стиль кода¶
- Пишите как окружающий код — плотность комментариев, имена, идиомы.
- Публичные функции получают однострочный docstring, объясняющий контракт.
- В ядре предпочитайте решения из стандартной библиотеки.
Pull request'ы¶
- Для всего нетривиального сначала откройте issue с описанием изменения.
- Держите PR сфокусированным; одна забота на PR.
- Включайте тесты и, если изменение видно пользователю, — обновление
документации и запись в
CHANGELOG.md. - Убедитесь, что
pytest -qзелёный.
Что мы не примем¶
- Что угодно, подставляющее значения в SQL без биндинга параметров.
- Новые обязательные зависимости ядра.
- Фичи, противоречащие философии — сомневаетесь — сначала откройте issue.
Сообщения об уязвимостях¶
Пожалуйста, не открывайте публичный issue для уязвимости. Сообщите о ней приватно мейнтейнеру (см. security policy репозитория), чтобы её можно было исправить до раскрытия.