Contribuer à un projet FOSS comme Bokeh peut en rebuter certains au vu de tout le travail à faire en amont. Voici un petit guide pour mettre en place un environnement de développement complet et isolé.
L'environnement
Commencez par créer un environnement de développement sain :
$ virtualenv venv
$ cd venv
$ source bin/activate
# On installe npm localement :
$ curl http://nodejs.org/dist/node-latest.tar.gz | tar xvz
$ cd node-v*
$ ./configure --prefix=$VIRTUAL_ENV
$ make -j 4 install
$ cd ..
# On réactive le virtualenv pour prendre en compte npm :
$ deactivate
$ source bin/activate
Les sources
Récupérez les sources de Bokeh, préalablement forké :
$ git clone https://github.com/BoboTiG/bokeh.git
$ cd bokeh
/!\ Pensez à travailler sur votre propre branche.
Les dépendances
Actuellement, Bokeh en est à la version 0.12.2, voici les commandes pour installer les pré-requis :
# Modules Python
# Pour le développement
$ python -m pip install bs4 colorama pytest pytest-cov pytest-selenium mock websocket-client flake8 boto
# Pour la documentation
$ python -m pip install sphinx pygments
# Dépendances de base
$ python -m pip install jinja2 numpy python-dateutil requests tornado pyyaml
# Pour les tests
$ python -m pip install pandas ggplot seaborn nbformat flexx jupyter sympy networkx
$ apt-get install phantomjs
# Si vous utilisez Python 2.7
$ python -m pip install futures
# Modules JavaScript
$ cd bokehjs
$ npm install
$ cd ..
Pour vérifier si les dépendances sont toutes satisfaites :
$ python scripts/devdeps.py
Enfin, activez le mode développement :
$ python setup.py develop
Et sélectionnez le premier choix.
Les tests
Étape cruciale que vous referez une paire de fois : vérifier que tout fonctionne comme prévu, qu'il n'y a pas de régression ni de nouveaux bugs.
Pour démarrer toute la batterie de tests (ne prend pas en compte la documentation), faîtes :
$ python -m pytest
Sinon, au cas par cas :
# Si vous avez bidouillé du code Python :
$ python -c 'import bokeh; bokeh.test()'
# Si vous avez bidouillé du code dans le dossier bokehjs (CoffeeScript, CSS, JavaScript) :
$ cd bokehjs
$ gulp test
Enfin, si vous avez fait le job correctement, vous avez écrit de la doc'. Donc :
$ cd sphinx
$ make clean all
Hacking
Pour prendre en compte les mofications faîtes dans le dossier bokehjs, lancez cette commande pour mettre à jour les scripts :
$ cd bokejs
$ gulp dev-build
Et pour lancer un script Python en utilisant la version en cours de développement de Bokeh :
$ BOKEH_RESOURCES=relative-dev python example.py
$ BOKEH_DEV=true bokeh serve example-server.py
Sources :