Manual

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.json is 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 keys when the site is built, so a new option is in the reference without anyone writing it there. See This site.

The source of this page

    Type to search. ↑ ↓ to move, enter to open.