Contributing#

manen is an open-source package meaning that you can contribute to the source in order to add new features, fix bugs. The progress of the project will be tracked directly in Github through issues. If you found any bug, don’t hesitate to open an issue (if one isn’t opened yet about the same bug) or/and open a pull request.

Reproducing a development environment#

manen has been developed with Python 3.8, using Pipenv to manage the development environment. If you want to help in the development of manen, reproducing a dev environment similar to the original one will be needed. To do so, you can whether use Pipenv to recreate the environment with the command

$ pipenv sync

Note that using Pipenv is not required. You can reproduce the development environment by re-installing the same package specified in the setup file of the package

$ pip install -e ".[doc,test,lint]"

This will install manen with extra dependencies for development workflows, described in the next section.

Note that building the documentation will require to install Pandoc, a universal document converter. All the instructions to do so can be found here.

Development workflows#

Besides the core for the core of manen, several workflows exists to document the code and ensure code quality. Each workflow requires some dependencies which can be installed as extra with pip, with the command pip install -e .[{extra}].

Documentation

Extra pip options: doc

Workflow used to build HTML pages for the documentation

Command

Build the documentation

$ cd docs && make html

Trigger a build of the documentation for any changes in the source

sphinx-autobuild can be used to launch a process that will watch any modification in the source files of the package or documentation and re-build the HTML pages at each event.

$ pip install sphinx-autobuild
$ sphinx-autobuild docs/source docs/build/html --watch manen/
Testing

Extra pip options: test

Workflow that will run tests for the whole package.

Command

Launching all the tests

$ pytest
Linting

Extra pip options: lint

Workflow to ensure some syntaxical quality for the source code.

Command

Checking tha the imports are well sorted

$ isort --check-only manen/

Linting all the files

$ pylint -E --rcfile=./.pylintrc ./manen/