Sortie de IPython 5.0

Posté par . Édité par Lucas, palm123, Xavier Teyssier, Storm, Nils Ratusznik, Benoît Sibaud et M5oul. Modéré par ZeroHeure. Licence CC by-sa
40
14
juil.
2016
Python

IPython est un terminal interactif pour Python qui améliore l'expérience utilisateur lors de l'usage en ligne de commande. Entre les versions 0.12 et 3.x incluses, IPython contenait aussi un grand nombre de fonctionnalités liées au "Notebook" qui fait maintenant partie du "Project Jupyter" – voir dépêche précédente. Cette nouvelle version 5.0 est donc en partie un retour aux sources qui se concentre sur l'interface en ligne de commande de IPython.

Ce qui suit est une adaptation approximative de l’annonce faite sur le blog de Jupyter.

Grand merci à palm123, Storm, M5oul et en particulier à Lucas qui a fait plus de la moitié de la traduction pendant que je suis à SciPy 2016 à Austin, Texas.

Sommaire

Sortie de IPython 5.0-LTS

Nous sommes heureux d'annoncer la sortie de IPython 5.0 LTS (support à long terme). IPython est le noyau Python pour Jupyter, et le terminal interactif pour Python ; il apporte un grand nombre de fonctionnalités simplifiant le calcul interactif dans un terminal Python, dans le Notebook Jupyter, ainsi que d’autre clients.

Cette version apporte quelques nouvelles fonctionnalités excitantes et de nouveaux développements (227 commits par 27 contributeurs sur 191 Pull Requests). Les améliorations ont principalement porté sur la console en ligne de commande.

Comme d’habitude, vous pouvez mettre à jour IPython avec :

$ pip install ipython --upgrade

La mise à jour devrait être disponible au travers de conda et autres gestionnaires de paquets dans les prochain jours.

Note : IPython et les multiples composants de Jupyter sont maintenus par le même groupe de développeurs, mais avec des calendriers de publication indépendants. Cette mise à jour concerne uniquement IPython en ligne de commande et le noyau Python. La majorité des changements n’affecte que les utilisateurs de la ligne de commande.

Une nouvelle interface en ligne de commande

Séparer IPython du notebook Jupyter a permis à l’équipe de développement de se re-concentrer sur l’interface en ligne de commande. La dépendance envers pyreadline pour Windows et gnureadline pour Mac a poussé Thomas Kluyver à remplacer cette vieille implémentation par une nouvelle implémentation uniquement codée en Python : prompt_toolkit.

Le paquet prompt_toolkit est une bibliothèque géniale de Jonathan Slenders qui est depuis peu en version 1.0. Allant au-delà de GNU readline, prompt_toolkit fournit de nombreuses fonctionnalités nouvelles pour l’édition de texte dans le terminal, ce qui améliore nettement l’expérience utilisateur. Comme cette bibliothèque est multi-plateforme, tous nos utilisateurs, qu’ils soient sous Linux/Unix, macOS ou Windows, vont profiter de ces améliorations. Grâce à prompt_toolkit, IPython gère maintenant :

  • la coloration syntaxique lors de la frappe ;
  • une véritable édition multi-ligne (flèche en haut et en bas pour se déplacer entre les lignes) ;
  • le collage multi-ligne sans perdre l’indentation et sans exécuter immédiatement le code ;
  • une meilleur interface de complétion (nous prévoyons d'améliorer encore ce point) ;
  • la souris de manière optionnelle.

image écran montrant IPython 5.0 sur un terminal avec coloration syntaxique et complétion active

Nous n’utilisons pas encore toutes les fonctionnalités du prompt_toolkit, mais après quelques semaines d’utilisation, cela choque d’utiliser de vieilles versions de IPython sans ces améliorations. Nous espérons que vous les apprécierez aussi. Nous remercions Jonathan Slenders, qui a été très réceptif à nos questions et demandes de nouvelles fonctionnalités !

Vous pouvez consulter une liste des changements plus détaillée : "Quoi de neuf dans IPython 5.0 (EN)".

Console Jupyter

La console Jupyter fournit l’expérience interactive côté client de IPython dans le terminal, mais offre aussi la possibilité de se connecter à tout noyau Jupyter de plus de IPython. Ceci vous permet de tester n’importe quel noyau Jupyter installé dans le terminal, sans avoir besoin de lancer un notebook complet juste pour cela. La console Jupyter propose aussi la quasi-totalité des fonctionnalités décrites ci-dessus et utilise prompt_toolkit.

La version 5.0 de la console Jupyter est sortie, apportant la compatibilité avec IPython 5. Si vous utilisez la console Jupyter, vous devrez la mettre à jour elle aussi.

$ pip install jupyter_console --upgrade

Long Term Support (LTS)

Habituellement, seul le support de la version majeure en cours de IPython est assuré. Dès qu’une nouvelle version majeure sort, les versions majeures précédentes cessent de recevoir des corrections de bugs. Pour cette série de versions 5.x, nous faisons une exception à cette règle : l’équipe fera de son mieux pour fournir des corrections pour les bugs critiques des versions de la série 5.x jusque fin 2017. Au-delà de cette date, nous baisserons la priorité de ce travail de maintenance, mais nous continuerons à accepter les pull requests de la communauté visant à corriger des problèmes durant 2018 et 2019, et nous publierons des versions quand cela sera nécessaire.

Nous espérons que cette politique aidera les utilisateurs qui ont besoin d’un support sur le long terme avec IPython 5.x.

Fin de la prise en charge de Python 2

IPython est compatible avec Python 3 depuis déjà plusieurs années, depuis que Thomas Kluyver a porté le code en utilisant 2to3 en 2011, et nous avons une seule base de code pour Python 2 et 3 depuis 2013. Le développement quotidien de IPython est réalisé désormais uniquement pour Python 3 et nous commençons à casser la compatibilité avec Python 2 jusqu’à ce que nous testions ou que des utilisateurs nous le remontent. Nous sommes aussi plutôt enthousiastes à l’idée d’utiliser les fonctionnalités de Python 3, comme les annotations de type, yield from, asyncio, async def, await et d’autres améliorations que le langage et sa bibliothèque standard ont gagné ces dernières années.

Nous avons ainsi décidé que IPython 5.x sera la dernière version majeure à prendre en charge Python 2.

Cette décision est bien évidemment la raison pour laquelle nous avons décidé de fournir un support plus long que la normale pour IPython 5.x. Nous sommes conscients du fait que de nombreuses personnes utilisent encore Python 2, et ils pourront continuer ainsi durant plusieurs années en disposant d'une version maintenue de IPython, avant de passer à Python 3 à leur convenance. Après fin 2017 nous souhaitons fournir des versions mineures de correctifs pour IPython 5.x via des patchs fournis par la communauté. Un point important à noter est que nous n’ajouterons plus de nouvelles fonctionnalités à une version prenant en charge Python 2 après la version 5.0 à venir.

Ainsi la prochaine version majeure de IPython, IPython 6.x, nécessitera Python 3. Cette version commencera à utiliser la nouvelle syntaxe et perdra la couche de compatibilité mise en place.

Si vous êtes un utilisateur de Python 2, soyez rassuré, nous ferons en sorte que la mise à jour n’installe pas IPython 6.x de manière inopinée en cassant votre système. Vous pouvez décider de garder plus longtemps IPython 5.x LTS et de sauter plusieurs versions de IPython le jour où vous passerez à Python 3. Cependant nous recommandons de garder à jour les versions stables quand elles sortent, et bien sûr de passer à Python3 quand c’est possible.

IPython est le premier projet IPython/Jupyter à laisser tomber la prise en charge de Python 2, mais vous pouvez vous attendre à ce que d’autres composants IPython/Jupyter suivent. Depuis sa conception, JupyterHub par exemple a été compatible Python 3 seulement.

Il est important de noter que les utilisateurs pourront toujours utiliser un noyau Python 2 avec le Notebook Jupyter, même lorsque tous nos projets auront franchi le pas vers Python 3. Dans le cadre de nos engagements de support à long terme, nous réaliserons les mises à jour nécessaires au noyau IPython afin qu’il puisse continuer à fonctionner dans un Notebook Jupyter durant la période de support LTS.

Aidez nous à passer à Python 3

Nous sommes conscients que passer à Python 3 peut être difficile pour de nombreuses raisons, et que planifier cette transition est souvent nécessaire. C’est pour cette raison que nous aidons à construire une liste non exhaustive de projets ayant décidé de supprimer la prise en charge de Python 2 d’ici à 2020, lors de la fin du support de Python 2.7 lui même. Des projets tels que Matplotlib et SymPy ont déjà décidé de laisser tomber Python 2 dans les années à venir, tandis que d’autre projets comme Scikit-Bio ont pris de l’avance sur nous et devraient devenir compatibles Python 3 seulement prochainement.

Ainsi, nous avons décidé de signer la Déclaration Python3 qui propose une liste des projets qui font ce pas, ainsi que le calendrier des sorties qui seront encore compatibles Python 2 lorsque cela est possible, et quelles versions seront compatibles Python 3 seulement.

Si vous souhaitez ajouter votre projet à cette page, ou si vous connaissez un projet qui songe à la transition vers Python 3, merci de prendre contact sur ce site. Nous croyons que donner le maximum d’informations le plus tôt possible aux utilisateurs de Python facilitera la transition.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.