Adopt the DLS Python Copier template#
Status#
Accepted, 7 September 2026.
Context#
lllm2 needs a consistent development workflow and documentation structure. The DLS Python Copier template provides both, along with a way to merge future template updates.
Decision#
Adopt release 5.4.0, recording the rendered answers in .copier-answers.yml.
Use its src/ layout, setuptools and setuptools-scm packaging, pytest, tox,
Ruff, pre-commit, mypy, editor settings and development container.
Organize documentation into tutorials, how-to guides, explanations and reference, with the template’s Sphinx Design cards and PyData theme. Keep the authored workbench documentation and DLS setup instructions.
Retain these project adaptations when updating the template:
Keep the Typer CLI entry point and explicitly package the model catalogues, web assets and chat templates. Include both
LICENSEandNOTICE.Keep release tests that build tagged source distributions and wheels, and validate the installed CLI and assets outside the source tree.
Keep the Chrome browser checks alongside the Python tests.
Keep GitHub Actions Pages deployment and the
_pypi.ymltrusted publisher in thereleaseenvironment. The documentation remains at the existing URL; a version switcher andgh-pagespublishing are not configured.Keep Sphinx builds independent of network requests. Reference pages describe the user-facing commands and settings; internal Python modules are not presented as a supported public API.
Keep a separate
docsdependency group, included indev.Let Ruff format code without splitting embedded prompts and shell commands. Preserve existing exception names, CLI enums and download cancellation access through narrow lint exceptions.
Consequences#
Contributors install the project with uv sync --locked before running it.
uv run --locked tox -p provides the shared Python and documentation checks.
Future copier update changes must be reviewed against these adaptations.