This repository is a Python project template, not a finished application.
Treat files under src/mypackage/ as starter stubs that should be renamed and
replaced by project-specific logic when the template is adopted.
- Human-facing project guidance lives in
README.md. - Tool-choice rationale lives in
tools_choice_evaluation.md. - This file is for coding-agent behavior only.
- Install/sync dependencies:
uv sync - Run the local CI gate:
make check - Individual checks:
uv run ruff check src testsuv run ruff format --check src testsuv run mypy srcuv run pytest -m "not integration and not e2e"
- Runtime-only install, matching Docker:
uv sync --no-dev
- Preserve the
src/layout. Importable code belongs undersrc/mypackage/until the package is renamed. - Keep dependency changes in
pyproject.tomland regenerateuv.lockwith uv. - Use
uv add <package>oruv add --dev <package>for dependencies. - Do not commit
.env,.venv, caches, or generated files underoutput/. - If code reads a new environment variable, add it to
.env.example. - Import application logging from
mypackage.logger; do not configure loguru in multiple modules. - Keep route functions thin; put business logic under
src/mypackage/core/. - Do not add
__init__.pytotests/. - Avoid
# type: ignore; if needed, include a reason on the same line.
After code or configuration edits, run make check before reporting success.
For README-only edits, make check is still cheap and preferred because this
template is meant to keep documentation, lockfile state, and checks aligned.
Many names are intentionally placeholders: mypackage, package metadata,
Docker image names, API title, and CLI help text. Do not rename them unless the
task is explicitly about adopting the template for a real project.