Contribution and development hints

Warning

This page has been automatically generated as has not yet been reviewed by the authors of capice-compute-backend!

The capice-compute-backend project is developed by the Helmholtz-Zentrum Hereoninstitution-url. It is open-source as we believe that this analysis can be helpful for reproducibility and collaboration, and we are looking forward for your feedback, questions and especially for your contributions.

Contributing in the development

Thanks for your wish to contribute to this project!! The source code of the capice-compute-backend package is hosted at https://git.rwth-aachen.de/nfdi4earth/pilotsincubatorlab/pilots/capice/capice-compute-backend.

Once you created an account in this gitlab, you can fork this repository to your own user account and implement the changes.

Afterwards, please make a merge request into the main repository. If you have any questions, please do not hesitate to create an issue on gitlab and contact the maintainers of this package.

Once you created you fork, you can clone it via

git clone https://git.rwth-aachen.de/<your-user>/capice-compute-backend.git

we recommend that you change into the directory and create a virtual environment via:

cd capice-compute-backend
python -m venv venv
source venv/bin/activate # (or venv/Scripts/Activate.bat on windows)

and install it in development mode with the [dev] option via:

pip install -e ./capice-compute-backend/[dev]

Helpers

Shortcuts with make

There are several shortcuts available with the Makefile in the root of the repository. On Linux, you can execute make help to get an overview.

Annotating licenses

If you want to create new files, you need to set license and copyright statements correctly. We use reuse to check that the licenses are correctly encoded. As a helper script, you can use the script at .reuse/add_license.py that provides several shortcuts from .reuse/shortcuts.yaml. Please select the correct shortcut, namely

  • If you create a new python file, you should run

    python .reuse/add_license.py code <file-you-created>.py
    
  • If you created a new file for the docs, you should run

    python .reuse/add_license.py docs <file-you-created>.py
    
  • If you created any other non-code file, you should run

    python .reuse/add_license.py supp <file-you-created>.py
    

If you have any questions on how licenses are handled, please do not hesitate to contact the maintainers of capice-compute-backend.

Fixing the docs

The documentation for this package is written in restructured Text and built with sphinx and deployed on readthedocs.

If you found something in the docs that you want to fix, head over to the docs folder, install the necessary requirements via pip install -r requirements.txt ../[docs] and build the docs with make html (or make.bat on windows). The docs are then available in docs/_build/html/index.html that you can open with your local browser.

Implement your fixes in the corresponding .rst-file and push them to your fork on gitlab.

Contributing to the code

We use automated formatters (see their config in pyproject.toml), namely

  • Black for standardized code formatting

  • blackdoc for standardized code formatting in documentation

  • Flake8 for general code quality

  • isort for standardized order in imports.

  • mypy for static type checking on type hints

  • reuse for handling of licenses

  • cffconvert for validating the CITATION.cff file.

We highly recommend that you setup pre-commit hooks to automatically run all the above tools every time you make a git commit. This can be done by running:

pre-commit install

from the root of the repository. You can skip the pre-commit checks with git commit --no-verify but note that the CI will fail if it encounters any formatting errors.

You can also run the pre-commit step manually by invoking:

pre-commit run --all-files

Updating the skeleton for this package

This package has been generated from the template https://codebase.helmholtz.cloud/dasf/templates/dasf-backend-template.git.

See the template repository for instructions on how to update the skeleton for this package.