Development
Working on instamix itself: one tool to bootstrap, and a check that runs the tests on the oldest and the newest Python.
instamix itself needs Python 3.9 or newer (RHEL 9’s platform Python),
click and glom. Development runs in uv-managed
environments, so only uv is needed to bootstrap. The tools (pytest, ruff,
mypy, ansible-core, …) are the dev dependency group in
pyproject.toml, pinned in uv.lock:
$ uv sync # .venv with instamix and the dev tools
$ make check # ruff and mypy, then the tests three times:
# the locked environment, Python 3.9 with click 8.1,
# and the newest Python and click (deprecations are errors)
$ make test-network # also build a real environment with uv
$ make spec # regenerate api/openapi.json
$ make docs # build this site into site/public
Write code that runs on 3.9 and keeps running on newer versions: test for a feature rather than a version, and do not use anything deprecated.
What keeps the documents true#
api/openapi.jsonis read from the commands themselves; the tests check the events every command emits, and the declarations against their Python signatures.- The reference on this site is read from that document and from
imix config keyswhen the site is built, so a new option is in the reference without anyone writing it there. See This site.