Development

Development requirements

deovi is developed with:

  • Test Development Driven (TDD) using Pytest;

  • Respecting flake and pip8 rules using Flake8;

  • Sphinx for documentation with enabled Napoleon extension (using Google style);

  • tox to run tests on various environments;

Every requirements are available in package extra requirements in section dev.

Install for development

First ensure you have pip and virtualenv packages installed then type:

git clone https://github.com/sveetch/deovi.git
cd deovi
make install

deovi will be installed in editable mode from the latest commit on master branch with some development tools.

Unittests

Unittests are made to works on Pytest, a shortcut in Makefile is available to start them on your current development install:

make test

Some tests involve usage of TMDb API and so require an API key to work but this is not mandatory to run the test suite, if no API key is available the API tests will just be skipped.

Finally if you aim to run the API tests, you just need to get a valid API key and put it into a file named tmdb-api-key.txt at root of your local repository, it will be automatically discovered.

Tox

To ease development against multiple Python versions a tox configuration has been added. You are strongly encouraged to use it to test your pull requests.

Just execute Tox:

make tox

This will run tests for all configured Tox environments, it may takes some time so you may use it only before releasing as a final check.

Documentation

You can easily build the documentation from one Makefile action:

make docs

There is Makefile action livedocs to serve documentation and automatically rebuild it when you change documentation files:

make livedocs

Then go on http://localhost:8002/ or your server machine IP with port 8002.

Note that you need to build the documentation at least once before using livedocs.

Releasing

Before releasing, you must ensure about quality, use the command below to run every quality check tasks:

make quality

If quality is correct and after you have correctly push all your commits you can proceed to release:

make release

This will build the package release and send it to Pypi with twine. You will have to configure your Pypi account on your machine to avoid to input it each time.

Contribution

  • Every new feature or changed behavior must pass tests, Flake8 code quality and must be documented.

  • Every feature or behavior must be compatible for all supported environment.