Development of pyspotify is coordinated through the IRC channel
irc.freenode.net and through GitHub.
For C code, follow the style of the Python C API, as outlined in PEP 7.
For Python code, follow Mopidy’s style.
- We follow the development process described at http://nvie.com/git-model.
- Keep commits small and on topic.
- If a commit looks too big you should be working in a feature branch not a single commit.
- Merge feature branches with
--no-ffto keep track of the merge.
To run tests, you need to install the
nose test runner. On Ubuntu:
sudo apt-get install python-nose
sudo pip install nose
Then you can build pyspotify and run
rm -rf build/ python setup.py build --with-mock PYTHONPATH=$(echo build/lib.linux-*/) nosetests
Continuous integration server¶
pyspotify uses the free service Travis CI for automatically running the test suite when code is pushed to GitHub. This works both for the main pyspotify repo, but also for any forks. This way, any contributions to pyspotify through GitHub will automatically be tested by Travis CI, and the build status will be visible in the GitHub pull request interface, making it easier to evaluate the quality of pull requests.
In addition, we run a Jenkins CI server at http://ci.mopidy.com/ that runs all
test on multiple platforms (Ubuntu, OS X, x86, arm) for every commit we push to
develop branch in the main pyspotify repo on GitHub. Thus, new code
isn’t tested by Jenkins before it is merged into the
develop branch, which
is a bit late, but good enough to get broad testing before new code is
In addition to running tests, the Jenkins CI server also gathers coverage statistics and uses pylint to check for errors and possible improvements in our code. So, if you’re out of work, the code coverage and pylint data at the CI server should give you a place to start.
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 install them through Debian/Ubuntu package management:
sudo apt-get install python-sphinx
Then, to generate docs:
cd docs/ make # For help on available targets make html # To generate HTML docs
The documentation at http://pyspotify.mopidy.com/ is automatically updated when
a documentation update is pushed to
mopidy/pyspotify at GitHub.
Update changelog and commit it.
Merge the release branch (
v1.x/developin the example) into
git checkout v1.x/master git merge --no-ff -m "Release v1.12" v1.x/develop
Tag the release:
git tag -a -m "Release v1.12" v1.12
Push to GitHub:
git push git push --tags
Build package and upload to PyPI:
git clean -fdx python setup.py sdist upload
Spread the word.