# Development

This document holds information about the development of the `cfel_fmt` package.

## Getting started

It is recommended to use a dedicated conda environment or a virtualenv.
After setting this up, install dependencies with:

```bash
pip install -r '.[test,lint,docs]' invoke
```

## Building and testing

CFELPyUtils uses [invoke](http://www.pyinvoke.org/), an excellent tool for task execution.

To show all available commands:

```bash
invoke --list
```

Output:

```
Available tasks:

  build        Build the package (and optional docs).
  clean        Remove all files generated by 'build' or 'test'
  docs         Build docs only
  pylint       Run pylint to check for issues
  test         Run unit tests with coverage
  type-check   Run static type checker mypy
```

To execute unit tests and coverage simply `invoke test` and to build a pip installable package
for your platform run `invoke build`.

The exact low level commands executed can be found in [tasks.py](tasks.py).
