/python-chrisapp-template

Batteries-included template for Python ChRIS plugins.

Primary LanguageShellMIT LicenseMIT

ChRIS Plugin Template

test status MIT License

This is a minimal template repository for ChRIS plugin applications in Python.

About ChRIS Plugins

A ChRIS plugin is a scientific data-processing software which can run anywhere all-the-same: in the cloud via a web app, or on your own laptop from the terminal. They are easy to build and easy to understand: most simply, a ChRIS plugin is a command-line program which processes data from an input directory and creates data to an output directory with the usage commandname [options...] inputdir/ outputdir/.

For more information, visit our website https://chrisproject.org

How to Use This Template

Go to https://github.com/FNNDSC/python-chrisapp-template and click "Use this template". The newly created repository is ready to use right away.

A script bootstrap.sh is provided to help fill in and rename values for your new project. It is optional to use.

  1. Edit the variables in bootstrap.sh
  2. Run ./bootstrap.sh
  3. Follow the instructions it will print out

Example Plugins

Here are some good, complete examples of ChRIS plugins created from this template.

What's Inside

Path Purpose
app.py Main script: start editing here!
tests/ Unit tests
setup.py Python project metadata and installation script
requirements.txt List of Python dependencies
Dockerfile Container image build recipe
.github/workflows/ci.yml "continuous integration" using Github Actions: automatic testing, building, and uploads to https://chrisstore.co

Contributing

The source code for the main branch of this repository is on the src branch, which has an additional file .github/workflows/src.yml When tests pass, changes are automatically merged into main. Developers should commit to or make pull requests targeting src. Do not push directly to main.

This is a workaround in order to do automatic testing of this template without including the .github/workflows/src.yml file in the template itself.