Development setup and testing#

Create a development checkout#

Create and activate an environment using Installation, then clone HTTomo and enter the repository:

$ git clone https://github.com/DiamondLightSource/httomo.git
$ cd httomo

Install the checkout and development dependencies. Choose the extra that matches the environment:

$ python -m pip install --editable ".[dev-cpu]"

For a CUDA development environment, use .[dev-gpu] instead. Confirm that Python imports the checkout and that parallel HDF5 is available:

$ python -c "import httomo; print(httomo.__file__)"
$ python -c "import h5py; print('Parallel HDF5:', h5py.get_config().mpi)"

The first command should print a path inside the checkout, and the second must print Parallel HDF5: True.

Run the test suite#

Run commands in this section from the repository root. To test the same version as an installed release, check out its corresponding Git tag rather than the latest main branch.

Run the default unit-test selection:

$ python -m pytest tests/

Tests requiring CuPy, example datasets, performance testing, or full datasets are skipped by default.

GPU tests#

On a system with a supported NVIDIA GPU and a working CuPy installation, run the tests marked as requiring CuPy:

$ python -m pytest tests/ --cupy

The --cupy option selects only the CuPy tests. Run both this command and the default test command to exercise both selections.

Small-data pipeline tests#

Generate the example pipeline files from the directives installed with httomo-backends:

$ mkdir -p docs/source/pipelines_full
$ python docs/source/scripts/execute_pipelines_build.py \
    --output docs/source/pipelines_full/

Run the CPU/TomoPy small-data tests with:

$ python -m pytest tests/ --small_data

These tests require TomoPy. Tests for GPU pipelines are skipped.

On a CUDA-enabled system with CuPy, TomoBAR, and httomolibgpu installed, run the GPU small-data tests with both selection options:

$ python -m pytest tests/ --small_data --cupy

Using both options selects tests marked as both small_data and cupy.

Run code-quality checks#

Install the repository’s pre-commit hooks, then run them before opening a pull request:

$ pre-commit install
$ pre-commit run --all-files

Build the documentation#

Create the documentation environment, install the same httomo-backends release pinned by the documentation workflow, generate the pipeline examples and build with warnings treated as errors:

$ micromamba create --file docs/source/doc-conda-requirements.yml
$ micromamba activate httomo-docs
$ python -m pip install --no-deps \
    -r docs/source/doc-pip-requirements.txt
$ python docs/source/scripts/execute_pipelines_build.py \
    --output docs/source/pipelines_full/
$ sphinx-build -W --keep-going -a -E -b html \
    docs/source docs/build

Open docs/build/index.html to inspect the result. Update docs/source/doc-pip-requirements.txt when the complete pipeline examples must use a new httomo-backends release; local and CI builds both consume that file.