Для работы с проектом использовать uv.
cp .env.example .env
uv sync --extra dev
make up
make test
make checkЕсли Docker не нужен, достаточно:
cp .env.example .env
uv sync --extra dev
uv run appЛокально make check запускает полный набор проверок: форматирование, линтер, типизацию и тесты. Docker-конфигурация находится в docker/.
В шаблоне настроено базовое логирование через стандартный модуль logging.
- инициализация находится в
src/logger.py - уровень логирования задаётся через
LOG_LEVELв.env.example - для получения логгера в модулях используйте
get_logger(__name__)
Пример:
from src.logger import get_logger
logger = get_logger(__name__)
logger.info("Application started")В шаблоне уже подключены:
SQLAlchemypsycopgдля синхронной работы с PostgreSQL- async engine через драйвер
postgresql+psycopg_async
Настройки подключения читаются из .env через src/config.py, а engine и фабрики сессий находятся в src/infrastructure/db/engine.py.
В шаблоне намеренно нет автоматических commit / rollback внутри session helpers. Это будет зависеть от прикладного сценария и должно определяться на уровне сервисов или use case-слоя, когда они появятся.
Для синхронного кода используйте:
with get_sync_session() as session:
...Для асинхронного:
async with get_async_session() as session:
...- Обновить
name,descriptionиauthorsвpyproject.toml - Добавить прикладные зависимости в
dependenciesиdev - Обновить
docker/Dockerfileиdocker/compose.yamlпод ваш способ запуска - Расширить
.gitlab-ci.ymlновыми этапами и проверками - Расширить тесты в
tests/test_main.pyили добавить новые - Добавить модели в
src/models/ - Добавить сервисы и определить транзакционные границы для работы с БД
src/main.py- точка входа приложенияsrc/config.py- загрузка настроек из.envsrc/logger.py- базовая конфигурация логированияsrc/infrastructure/db/engine.py- sync/async engine и session factoriessrc/models/- модели SQLAlchemytests/test_main.py- базовый пример тестаpyproject.toml- зависимости и настройки инструментовMakefile- командыinstall,test,lint,format,typecheck,check,up,downdocker/Dockerfile- образ приложенияdocker/compose.yaml- локальный запуск через Docker Compose.gitlab-ci.yml- пайплайн GitLab CI для merge requestREADME.md- описание шаблона.env.example- пример переменных окружения
- Для установки кастомных пакетов из нашего Registry, следует задать переменные окружения
export UV_INDEX_GITLAB_USERNAME="read-package"
export UV_INDEX_GITLAB_PASSWORD="GAT"- Dev-зависимости ставятся через
uv sync --extra dev, поэтому они должны храниться в[project.optional-dependencies].devвнутриpyproject.toml. - Для запуска без
Makefileможно использоватьuv run app.