IPython est une console alternative principalement tournée vers l'exploration interactive des données. Après une longue période de réécriture du code, les versions stables s'enchainent tous les quelques mois depuis un peu plus d'un an.
La précédente version, sortie en décembre 2011, a introduit une nouvelle interface web, que cette nouvelle mouture vient principalement améliorer, sans pour autant délaisser les utilisateurs de la ligne de commande.
Le notebook
L'interface web IPython est l'un des aspects de cette version qui a reçu le plus de modifications. La plus visible est bien sûr l'abandon du panneau droit pour laisser place à une barre de menu avec un bandeau d'accès rapide à certaines fonctions. Néanmoins le plus gros du travail a été effectué sous le capot, où la majorité du code javascript a été modifié pour être plus modulaire. Il est maintenant possible d'écrire soi-même un widget capable de dialoguer avec le noyau Python à l'autre bout de la connexion websocket pour effectuer toute action désirée. Donc oui, grâce à votre Arduino, vous pouvez maintenant changer le titre de l'onglet si votre café est prêt.
On trouvera sur la liste de diffusion d'IPython, et dans les pull requests, différents exemples comme l'intégration d'une bibliothèque de graphiques (flot) avec des graphiques interactifs ou une cellule qui permet de choisir interactivement sur quel worker elle s'exécute lorsque l'on utilise la machinerie parallèle de IPython (docs/examples/widgets).
Ce genre d'extensions devrait à l'avenir être de plus en plus répandu et facile à installer, grâce à la fonction magique %install_ext $URL
, dont il est recommandé d'user et d'abuser.
Cette nouvelle version a également été l'occasion de réécrire les infobules qui apparaissent pour donner les docstrings des fonctions afin de les rendre plus intelligentes et plus fonctionnelles, ainsi que les fonctionnalités du compléteur qui propose maintenant des complétions basées sur le texte environnant, y compris lorsque le noyau Python est occupé en arrière-plan.
Fonctions magiques
IPython est aussi connu pour ses fonction « magiques » précédées du symbole %
.
Pour rappel, ces « magics » permettent d'étendre le comportement de l'interpréteur IPython pour exécuter une commande en parallèle (%px
) ou évaluer les performances d'une fonction (%timeit
) de manière simple. Le fonctionnement interne de ces magics a été totalement repensé afin de rendre l'écriture et l'intégration de nouvelles magics le plus simple possible pour l'utilisateur.
Cela a permis la mise en place de magics ayant pour portée l'ensemble d'une cellule du notebook, ou d'une entrée multi-ligne de la console. Il est maintenant possible de tester le temps d'exécution d'un bloc entier de code (%%timeit
), d'écrire directement du Cython (grâce à %%cython
), d'exécuter un sous-process bash (%%shell bash
) ou Ruby (je vous laisse deviner). Vous trouverez même des extensions permettant de faire communiquer IPython avec R, graphviz et autres. N'hésitez pas à en écrire et ajouter leur URL à la liste connue sur cette page.
Qtconsole
La complétion avec la console Qt à été légèrement améliorée afin que les résultats soient navigables à l'aide de la touche tabulation et des flèches directionnelles. On apprécie toujours d'avoir quelques touches en moins à taper pour obtenir ce que l'on veut.
Pour ceux qui aiment redémarrer souvent leur noyau Python pour faire des tests, il est maintenant possible de tuer le noyau courant sans devoir confirmer que « Oui, je veux bien redémarrer le noyau, je sais ce que je fais laisse moi tranquille ».
Il est aussi possible d'afficher de jolies nimages directement en JPG dans la Qtconsole, qui était auparavant monogame avec les PNG.
Divers
Microsoft aime IPython et explique comment l'installer sur Windows Azure (hint : use Linux)
http://www.windowsazure.com/en-us/develop/python/tutorials/ipython-notebook/
Beaucoup de corrections de bugs et d'améliorations mineures qui ne méritent pas un paragraphe, mais dont on remercie grandement les auteurs, qu'ils fassent partie des habitués de la Pull Request ou simplement de passage.
À quand %load_ext linuxfr
? (un petit oiseau m'a dit que Fernando Perez parlait un peu français et était déjà venu ici…)
IPython notebook sur EC2 en tant qu'extension Chrome.
Je vous laisse bien sur aller consulter les notes de versions pour une description plus approfondie et plus exhaustive des changements apportés.
Pour finir, les développeurs attendent donc vos réactions, rapports de bugs, patchs ou pull requests qui sont les bienvenus sur github que ce soit en Python, javascript, ou autre.
Pour ceux qui préfèrent les rencontres physiques, il y aura des tutoriels lors de SciPy 2012 au texas, qui espérons-le seront disponibles en vidéos. Et bien qu'aucun talk officiel ne soit prévu, certains développeurs se promèneront à Euro SciPy.
Aller plus loin
- Site officiel (873 clics)
- Releases notes de la version 0.12 (26 clics)
- Sources sur github (14 clics)
- Dépèche pour la sortie de la version 0.12 (87 clics)
- Annonce de la sortie sur la ML (8 clics)
- Releases notes de la version 0.13 (34 clics)
- Télécharger le tar.gz (23 clics)
# Wow
Posté par Gui13 (site web personnel) . Évalué à 4.
Wow, je ne connaissais pas, et c'est excellent pour faire des présentation interactives!
Un peu comme Matlab qui te permettait de faire des sortes de documents qui embarquaient du code dynamique.
Bref, je teste.
# Deux liens intéressants
Posté par gasche . Évalué à 4.
Je me suis demandé en lisant cette dépêche quel était le lien avec le notebook du projet Sage (un logiciel de calcul formel en Python). On peut trouver la réponse dans un billet très intéressant de l'auteur de IPython:
The IPython notebook: a historical retrospective
Il y a aussi une intégration de IPython dans Emacs qui fait assez envie: Emacs IPython Notebook. En particulier, voici les captures d'écran.
[^] # Re: Deux liens intéressants
Posté par mbussonn . Évalué à 3.
Les développeurs du projet Sage on pour but de migrer leur architecture actuelle vers le Notebook IPython, et sont ceux qui nous font le plus de retour sur l'implémentation de celui-ci.
Il est vrai que l'emacs IPython Notebook est attirant, malheureusement vim ne support pas les inclusions d'images donc tout le monde n'en profitera pas.
Ce n'est pas le seul endroit où les utilisateurs d'emacs sont mieux loti. Par exemple, les libraries javascript qu'utilisent le Notebook supportent en principe les keybindings vim, mais on manque de main d'oeuvre pour codé l'interface utilisateur de configuration.
En application externe faite pour s'interfacer avec le Notebook, on peux aussi citer vIPer (cf annonce sur la ML ) qui permet de faire un diaporama interactif à partir d'un Notebook.
Nbconvert permet de convertir un Notebook (au sens fichier .ipynb) en .tex afin d'en faire un vrai PDF. Une fois prêt ce projet devrais fusionner avec iPython.
Il y a aussi eu une tentative de coupler un noyau Ruby avec le Notebook, qui en fin de compte est langage agnostique, projet sans commit depuis 3 mois malheureusement.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.