All contributions to umami are welcome. If you are considering developing with umami, we recommend you read this page. All developers and maintainers are expecte to abide by the Code of Conduct.
To contribute to umami, please fork the repository and make modifications on a development branch. If you have any questions about how to get started, make an issue on GitHub.
Umami strives for a meaningful 100% code coverage through docstring and unit tests, adherence to PEP8, low lint levels using Flake8, and Black style. Many of these standards are enforced by continuous integration tests and the development team will help you bring contributions into compliance.
Developer Install instructions¶
After forking the repository, install using a conda environment.:
git clone https://github.com/<your user name>/umami.git cd umami conda env create -f environment-dev.yml conda activate umami-dev python setup.py develop
You will need to run
conda activate umami-dev each time you start a new
When using this conda environment, you will have all of the tools you need to format files and run the tests.
Unit and Docstring Tests¶
Umami uses pytest to discover and run tests of the codebase. We have two
types of tests that serve two complimentary purposes. Docstring tests are
examples within the code that provide context in the API documentation. Unit
tests live in in the
test folder and provide additional tests that are
extraneous to the API documentation but important for ensuring that umami is
fully tested. The tests use small examples so that known answers can be used.
To run the tests, navigate to the top level
umami directory and run:
You can also assess how well the tests cover the code base.:
pytest umami tests/ --doctest-modules --cov=umami --cov-report term-missing -vvv
There are a few convienience commands available through the Makefile to assist
with formatting and checking for lint. From the top level of the umami source
code directory you can type
make pretty to format all the files. You can
make lint to check for lint. Finally, the command
make docs will
make the docs with sphinx and open the local copy in a web browser.