Skip to content

Development And Release

Docker First

Docker is the main entry point for development, testing, API serving, documentation builds, package builds, and desktop build smoke checks.

docker compose build
docker compose run --rm test
docker compose run --rm gui-test
docker compose up api
docker compose run --rm docs
docker compose run --rm package
docker compose run --rm desktop-build

The Dockerfile uses python:3.12-slim-bookworm and keeps dependency layers separate from source code layers. BuildKit cache mounts are used for apt and pip caches.

If the default Debian mirror is unstable:

DEBIAN_MIRROR=http://mirrors.ustc.edu.cn/debian \
DEBIAN_SECURITY_MIRROR=http://mirrors.ustc.edu.cn/debian-security \
docker compose build gui-test

Headless GUI tests run with QT_QPA_PLATFORM=offscreen. Docker is not advertised as a zero-configuration way to display a real desktop GUI on every host OS.

Local Optional

python -m venv .venv
pip install -e ".[dev,gui,api,train]"

Python Package

docker compose run --rm package python -m build

The package build does not bundle model weights, datasets, API keys, or desktop executables.

Desktop Executable

docker compose run --rm desktop-build

The PyInstaller build currently targets Linux. Windows and macOS are best-effort CI targets. Model weights stay external and are configured at runtime.

Contribution Rules

Run Ruff, unit/integration tests, and GUI tests when touching PySide6 code. Do not commit generated runs, model weights, private datasets, API keys, or raw copyrighted images. Data and model contributions must include provenance, license, class list, and redistribution information.