Development¶
While each red-rover module is intended to be installed and used independently, we provide a single development environment based on a shared pyproject.toml.
Warning
While roverc (red-rover/collect) is nominally a part of the development environment (e.g., for documentation), it is not actually fully installed in the main environment. Developing roverc should use an actual physical data collection system, while the main environment can be used on any linux system.
Setup¶
Assuming uv is installed, you can install all dependencies with uv sync --all-extras in ./red-rover. This installs the documentation stack, testing / linting tools, and the roverd: red-rover/format and roverp: red-rover/processing modules as editable (i.e., pip install -e) links.
We also use pre-commit hooks; please install these with uv run pre-commit install.
Info
You can also manually trigger the pre-commit hooks with uv run pre-commit run.
Documentation¶
red-rover has a single documentation site using mkdocs / mkdocs-material / mkdocstrings-python. To build for development:
Info
The documentation site is automatically built and deployed by GitHub Actions on push to main.
Testing¶
Currently, only roverd comes with unit tests. Run with
export ROVERD_TEST_TRACE=/data/roverd/test-trace
uv run --all-extras pytest -ra --cov --cov-report=html --cov-report=term
ROVERD_TEST_TRACE should point to a sample data trace with at least 0.5s of valid data across all modalities.
Tip
Serve a live version of the code coverage report using
Version Control¶
red-rover is currently managed as a mono-repo, with the three components sharing the same version (which is tagged at the repository level as well). When making changes, please remember to update the version in pyproject.toml in each subdirectory.