Contributing

Setup

git clone https://github.com/FireDynamics/FlameTrack.git
cd FlameTrack
pip install -e ".[dev]"
pre-commit install

Running Tests

Unit tests (fast, no display needed):

pytest tests/unit/

Full test suite (requires Xvfb on Linux or macOS):

pytest tests/

On Linux CI, tests run under xvfb-run automatically. On macOS without a display, PyQtGraph widget tests are skipped automatically.

Code Quality

Pre-commit runs automatically on every git commit:

  • ruff — linting and import sorting

  • ruff-format — formatting (replaces black)

  • mypy — type checking

  • trailing-whitespace, end-of-file-fixer

Run manually against all files:

pre-commit run --all-files --hook-stage manual

Branch & PR Workflow

  1. Create a feature branch: git checkout -b feature/my-feature

  2. Make changes, write tests

  3. Commit — pre-commit hooks run automatically

  4. Open a pull request against main

Releases

Beta release (publishes to TestPyPI):

git tag v1.x.xb1
git push origin v1.x.xb1

Stable release (publishes to PyPI):

git tag v1.x.x
git push origin v1.x.x

The release workflow uses setuptools-scm to derive the version from the git tag automatically — no manual version bump needed.