Development

Python environment

python -m pip install -e '.[dev]'
python -m pytest tests/
python -m ruff check .

Java Runner

Use the checked-in Maven wrapper so local and CI builds use the same Maven version:

./mvnw -f java-runner/pom.xml clean verify

Windows uses mvnw.cmd.

Documentation

python -m pip install -r docs/requirements.txt
python -m pip install -e .
sphinx-build -W --keep-going -b html docs docs/_build/html

Warnings fail the documentation build locally, in GitHub Actions, and on Read the Docs.

Release checks

Version, Runner, ZXing, checksum, and conda metadata must remain synchronized. Run these checks before preparing a release:

python scripts/verify_version_sync.py
python scripts/verify_release_evidence.py
python -m build
python -m twine check dist/*

The full release procedure and immutable-asset rules are documented in RELEASING.md in the repository root.