Contributing

Contributions and suggestions are very welcome. You can find the code on Github.

The project uses uv for dependency management.

Ruff is used for formatting and linting. Pyright is used for type-checking.

uv run ruff format --check
uv run ruff check
uv run pyright --warnings

The tests use Playwright to run browser-based tests.

uv run playwright install chromium
uv run pytest

The documentation is build using Sphinx.

uv run sphinx-build --fail-on-warning docs docs/dist

To preview and watch the documentation run

uv run sphinx-autobuild docs docs/dist -a --watch src --watch docs

The readme is built from README.md.tpl using code snippets from project files with

uv run dev/build_readme.py

For user-facing changes, add an entry under the “Unreleased” heading to .CHANGELOG.md.

Releases

To prepare a release:

  1. git fetch && git checkout release/candidate

  2. git merge --ff-only origin/HEAD

  3. Set the desired version in ./pyproject.toml

  4. Run uv lock

  5. Update CHANGELOG.md

  6. Commit the changes with the message release: vX.Y.Z

  7. git push

After main workflow is run the release workflow will publish the release.