Development

Installation

To install the latest stable release from PyPI (recommended):

pip install "qubed[cli,stac_server,docs,dev]"

Delete optional feature dependencies as appropriate.

To install the latest version from github (requires a rust tool chain):

pip install qubed@git+https://github.com/ecmwf/qubed.git@main

To build the develop branch from source

  1. Install a rust toolchain

  2. pip install maturin then run:

git clone -b develop git@github.com:ecmwf/qubed.git
cd qubed
maturin develop

Pre-commit hooks

The repo comes with a .pre-commit-config.yaml that should be used to format the code before commiting. See the pre-commit docs but the gist is:

pip install pre-commit
pre-commit install # In the root of this repo

CI

The tests are in ./tests. The CI is setup using tox to run the tests in a few different environments, they are currently:

  • python 3.13

  • python 3.12

  • python 3.11

  • python 3.12 with numpy version 1.x as opposed to version 2.x which is used by default.

Git Large File Storage

This repo uses git Large file storage to store some qubes larger than 100MB. These files are not downloaded by git clone by default. In order to download them do, for example:

git lfs pull --include="tests/example_qubes/climate-dt/ten_yearly/climate-dt-1990-2000.cbor" --exclude=""

That these files are not downloaded by default is controlled the contents of .lfsconfig

You can use git lfs ls-files to see which files are currently tracked by lfs.

## Docs

The docs are built with sphinx with a plugin that allows code the run and the output to be saved into the docs. This code can break when you update qubed so use docs/test_docs.sh to check it hasn’t broken. The CI also has a job to check for this.