*****************
How to contribute
*****************
Development of Mopidy is coordinated through the IRC channel ``#mopidy`` at
``irc.freenode.net`` and through `GitHub `_.
Code style
==========
We generally follow the `PEP-8 `_
style guidelines, with a couple of notable exceptions:
- We indent continuation lines with four spaces more than the previous line.
For example::
from mopidy.backends import (BaseBackend, BaseCurrentPlaylistController,
BasePlaybackController, BaseLibraryController,
BaseStoredPlaylistsController)
And *not*::
from mopidy.backends import (BaseBackend, BaseCurrentPlaylistController,
BasePlaybackController, BaseLibraryController,
BaseStoredPlaylistsController)
- An exception to the previous exception: When continuing control flow
statements like ``if``, ``for`` and ``while``, we indent with eight spaces
more than the previous line. In other words, the line is indented one level
further to the right than the following block of code. For example::
if (old_state in (self.PLAYING, self.STOPPED)
and new_state == self.PLAYING):
self._play_time_start()
And *not*::
if (old_state in (self.PLAYING, self.STOPPED)
and new_state == self.PLAYING):
self._play_time_start()
Running tests
=============
To run tests, you need a couple of dependencies. Some can be installed through
Debian/Ubuntu package management::
sudo aptitude install python-coverage
The rest (or all dependencies if you want to) can be installed using pip::
sudo aptitude install python-pip python-setuptools bzr
sudo pip install -r requirements-tests.txt
Then, to run all tests::
python tests
Writing documentation
=====================
To write documentation, we use `Sphinx `_. See their
site for lots of documentation on how to use Sphinx. To generate HTML or LaTeX
from the documentation files, you need some additional dependencies.
You can either install them through Debian/Ubuntu package management::
sudo aptitude install python-sphinx python-pygraphviz graphviz
Or, install them using pip::
sudo aptitude install python-pip python-setuptools graphviz
sudo pip install -r requirements-docs.txt
Then, to generate docs::
cd docs/
make # For help on available targets
make html # To generate HTML docs
The documentation at http://www.mopidy.com/docs/ is automatically updated
within 10 minutes after a documentation update is pushed to
``jodal/mopidy/master`` at GitHub.