Isabl Docs
  • Home
  • Quick Start
  • Registering Metadata
  • Importing Data
  • Retrieving Data
  • Writing Applications
  • Operational Automations
  • Project Privacy
  • Isabl Settings
  • Production Deployment
  • Maintenance
  • Batch Systems
  • Contributing Guide
  • Other CLI commands
  • Bonus tips
Powered by GitBook
On this page
  • Isabl API
  • Isabl CLI
  • Isabl Web
  • Documentation
  • Contribute with Github
  • Formatting projects
  • Bumping version of PyPi
  • Emoji reference

Was this helpful?

Contributing Guide

⏱ tutorial time: 20 minutes

PreviousBatch SystemsNextOther CLI commands

Last updated 6 months ago

Was this helpful?

This tutorial will help you set up a full Development environment with all components of the isabl infrastructure.

📘 Contributions are welcome, and they are greatly appreciated! Every little bit helps, and credit will always be given. isabl could always use more documentation, whether as part of the README, in doc-strings, or even on the web in blog posts articles, and such. Also, bet you've read the .

Isabl API

  1. Clone locally:

     git clone git@github.com:papaemmelab/isabl_api.git
     cd api
  2. Build containers:

     docker-compose build
  3. Run tests using :

     docker-compose run --rm django tox

    Or run , or individually:

     docker-compose run --rm django pytest --ds example.settings --cov=isabl_api
     docker-compose run --rm django pylint isabl_api
     docker-compose run --rm django pydocstyle isabl_api

Create a superuser

Create a superuser with username and password set to admin (we will need it later):

docker-compose run --rm django python manage.py migrate
docker-compose run --rm django python manage.py createsuperuser --email admin@isabl.io --username admin

Start the backend

docker-compose up

Coverage report

Since tests were run inside a container, we need to combine the coverages to see the html report:

alias opencov="mv .coverage .coverage.tmp && coverage combine && coverage html && open htmlcov/index.html"
pip install coverage && opencov

Isabl CLI

  1. Clone locally:

     git clone git@github.com:papaemmelab/isabl_cli.git
     cd cli
  2.  pip install -r requirements.txt
  3.  tox
     py.test tests/ --cov=isabl_cli -s
     pylint isabl_cli
     pydocstyle isabl_cli

Note: if your changes depend on a particular branch of Isabl API, make sure both Isabl CLI and Isabl API branches are called the same so that the travis configuration can pick that up.

Isabl Web

  1. Clone locally:

     git clone git@github.com:papaemmelab/isabl_web.git
     cd web
  2. Install yarn:

     brew install yarn --without-node
  3. Install dependencies:

     yarn install
  4. Start the react development server:

     yarn serve

    Important! export FRONTEND_URL=localhost:8080 before running docker-compose up in the api repository, note that the port may vary.

Documentation

 git clone git@github.com:isabl/docs.git

Contribute with Github

  1. Create a branch for local development and get ready to make changes locally:

     git pull
     git checkout -b name-of-your-bugfix-or-feature
  2. Commit your changes and push your branch to GitHub (see the emoji reference):

     git add .
     git config commit.template .gitmessage
     git commit -m ":emoji: your short and nice description"
     git push origin name-of-your-bugfix-or-feature
  3. Create a test in:

     tests/
  4. Submit a pull request through the GitHub website.

Formatting projects

pip install black && black .
yarn lint

Bumping version of PyPi

echo v0.1.0 > isabl_api/VERSION
git add isabl_api/VERSION
git commit -m ":gem: bump to version 0.1.0"

Emoji reference

We use emojis to quickly categorize commits and pull requests. These are some common type of changes we use but feel free to ignore the conventions:

emoji

name

type of change

🚀

rocket

new feature

🐛

bug

bug fix

📝

memo

changes to documentation

🎨

art

formatting no code change

🔧

wrench

refactoring production code

✅

white_check_mark

adding/editing test logic

👕

shirt

no production code change

💎

gem

bump to new version

Tip: To insert an emoji in mac type control+cmd+space. Alternative, type the emoji's name within two semicolons (e.g. :rocket:).

Now you can login in the frontend at (there won't be much to see). An easy way to create objects is to run the tests.

Install with pip, it is strongly recommended to install in a :

Run tests using , make sure you created the admin user:

Or run , or individually:

Simply create a PR in :

Python Projects are formatted with . Is required for api, cli and apps, simply run:

Project web is formatted following the . For this one, simply run:

Following the guidelines and update the VERSION file before creating a PR, for instance:

Zen Of Python
tox
pytest
pylint
pydocstyle
virtual environment
tox
pytest
pylint
pydocstyle
github
black
Vue style guide
semantic versioning
http://localhost:8000
client