Skip to content

Developer Guide

We welcome contributions to scida, such as bug reports, feature requests, and design proposals. This page contains information on how to contribute to scida.

Development environment

Clone the repository

Make a fork of the repository, then clone the repository to your local machine:

git clone https://github.com/YOURUSERNAME/scida
cd scida

Install

We use poetry to manage dependencies and the development environment. After installing poetry, you can install scida and its dependencies with

poetry install

This will create a virtual environment and install scida and its dependencies, including development dependencies. All commands, such as python and pytest will be run in this environment by prepending poetry run ... to the command.

While using poetry is recommended, you can also install scida with pip in a virtual environment of your choice:

python -m venv scida_venv
source scida_venv/bin/activate
pip install -e .

Note that in latter case, you will have to manage the dependencies yourself, including development dependencies. If choosing this path, remove any poetry run prefixes from the commands below accordingly.

Run tests

To run the tests, use

poetry run pytest

Many tests require test data sets. These might not be available to you and lead to many tests being skipped.

Contributing code

Code Formatting

We use the black code formatter to ensure a consistent code style. This style is ensured by the pre-commit hook config. Make sure to have pre-commit installed and run

pre-commit install

in the repository to install the hook.

Docstring style

We use numpydoc to format docstrings. Please annotate all functions and classes with docstrings accordingly.

Testing

We use pytest for testing. Add new tests for added functionality in a test file in the tests directory. Make sure to run the tests before submitting a pull request.

Many tests require test data sets. These data sets are not included in the repository. Scida will check for the existence of these data sets and skip the tests if they are not available. The metadata for the test data sets is defined in "tests/testdata.yaml". The paths are evaluated relative to the "testdata_path" entry in the configuration, see configuration. A subset of smaller test data sets can be downloaded for the data sets described in ".github/actions/get-testdata-all/action.yaml" in the scida repository. This file also contains the symbolic links to larger data sets, which are only available through access to the /virgotng file system on MPCDF resources.