On va présenter ici un nouveau générateur de site statique, écrit en python. Il n’est pas exactement nouveau au sens où nous en sommes à la version 3, mais jusqu’ici le projet est resté relativement confidentiel. Nous parlerons également des perspectives d’évolution de ce projet.
L'installation et la distribution de paquets Python (2/4)
Cette dépêche est la deuxième d’une série de quatre sur le packaging en Python :
- L’histoire du packaging Python
- Tour de l’écosystème actuel
- Le casse-tête du code compilé
- La structure de la communauté en question
Je vais donc proposer un aperçu plus ou moins complet des différents outils, et de ce qu’ils font ou ne font pas, en essayant de les comparer. Mais je parlerai aussi des fichiers de configuration, des dépôts où les paquets sont publiés, des manières d’installer Python lui-même, et de l’interaction de tout ceci avec les distributions Linux. En revanche, je laisse de côté pour l’instant les paquets écrits en C, C++ ou Rust et la complexité qu’ils apportent.
L’installation et la distribution de paquets Python (1/4)
Quelques dépêches précédentes ont parlé des outils de packaging Python, comme ici, là ou encore là. Je vais chercher à faire un tour complet de la question, non seulement du point de vue de l’utilisateur qui cherche à comprendre quelle est « la bonne » solution (← ha ha ha rire moqueur…), mais aussi en expliquant les choix qui ont été faits, les évolutions, la structure de la communauté autour des outils, et les critiques qui leur sont souvent adressées, à tort ou à raison.
Programme de la PyConFR 23
La PyConFR, l'évènement de la communauté francophone du langage de programmation python, aura lieu du 16 au 19 février 2023 à Bordeaux. L'évènement est gratuit mais l'inscription au préalable est obligatoire.
Le programme vient de paraître, le sommaire des conférences, des ateliers et des sprints vous attend dans la suite de cette dépêche.
Conférence & Atelier PyConFr - du 16 au 19 février 2023 à Bordeaux
Quatre journées consacrées au langage Python, la PyConFr revient après deux ans d’absence pour proposer des Sprints, où l’on se retrouve à l’Université de Bordeaux pour coder ensemble le jeudi et vendredi, et des conférences le week-end afin de découvrir les expériences de chacun avec le langage Python.
L’accès est gratuit, ouvert à toutes et tous, cependant l’inscription préalable est nécessaire.
Des nouvelles de WeasyPrint, ou comment développer du libre à (presque) plein temps
WeasyPrint est un générateur de documents qui transforme du HTML/CSS en PDF. C’est écrit en Python, c’est libre (bah oui, sinon on n’en parlerait pas ici), et nous en avions déjà discuté ici il y a quelques années dans un petit article.
Avec le temps (plus de 11 ans depuis le premier commit, que le temps passe vite ma p’tite dame…), le logiciel a gagné une sacrée ribambelle d’utilisateurs avec plus de 750 000 téléchargements par mois. Parmi tous ces gens qui utilisent WeasyPrint, on a forcément rencontré plein de gens avec plein d’idées pour générer plein de drôles de trucs ! Nous avons croisé entre autres des rapports de sécurité informatique 🖥️, des livres de jeu de rôle 🎮️, des tickets 🎫️, des documents scientifiques 🧮️, des factures de sites de vente en ligne 📄️, des compte-rendus biologiques ⚛️, des modes d’emploi de fours 🧑🍳️, des lettres officielles 💌️, des étiquettes électroniques 🏷️, des affiches promotionnelles en pharmacies ⚕️, des diplômes universitaires 🎓️…
Forts de ce petit succès, Lucie Anglade et moi (Guillaume Ayoub) avons créé depuis deux ans une structure qui s’appelle CourtBouillon (oui, parce que notre autre passion est la bonne nourriture) dédiée au développement de WeasyPrint et de ses dépendances. Nous avons donc pu passer beaucoup de temps à travailler sur le logiciel et apporter plein de nouveautés, tout en nous posant beaucoup de questions pour assurer un modèle économique viable. Voilà ce que l’on aimerait partager avec vous.
PyPI déploie le système 2FA pour les projets critiques écrits en Python
PyPI (de l’anglais « Python Package Index ») est le dépôt tiers officiel du langage de programmation Python. Son objectif est de doter la communauté des développeurs Python d’un catalogue complet recensant tous les paquets Python libres.
Google, par l’intermédiaire de l’Open Source Security Foundation (OpenSSF) de la Linux Foundation, s’est attaqué à la menace des paquets malveillants et des attaques de la chaîne d’approvisionnement des logiciels open source. Elle a trouvé plus de 200 paquets JavaScript et Python malveillants en un mois, ce qui pourrait avoir des « conséquences graves » pour les développeurs et les organisations pour lesquelles ils écrivent du code lorsqu’ils les installent.
PyPI déploie le système 2FA (pour double authentification ou authentification à deux facteurs) pour les projets critiques écrits en Python.
Environnement moderne de travail Python
Environnement moderne de travail Python
Si vous développez ou utilisez des programmes s’exécutant au-dessus de l’interpréteur Python, il peut arriver que vous vous retrouviez avec un environnement très dégradé sur votre poste de travail..
Je propose ici de découvrir un ensemble d’outils permettant de configurer des environnements Python qui vous éviteront de polluer votre système ou vos futurs environnements de développement. En effet, entre votre système Linux et les multiples projets de développement sur lequel vous travaillez vous avez souvent besoin d’interpréteur Python dans des versions différentes ou de librairies dans des versions particulières.
Dans ce guide, nous allons voir comment installer un environnement Python répondant aux cas d’usage suivants :
- gestion facile de multiple versions de l’interpréteur Python ;
- isolation d’applications CLI basées sur Python ;
- création d’environnements de développement isolés les uns des autres.
Python pour la fin de l’année 2021
En 2019 Oliver commençait une série de dépêches sur le langage Python, série qu’il nous promettait pour la rentrée 2019. Divers aléas ont fait que cette série n’a pu être terminée qu’en juin 2021.
Et, comme cela forme un tout cohérent et qu’il y avait, dès le départ, l’idée de les réunir, l’aboutissement est un, en fait plutôt deux epub qui compilent les dépêches et leurs commentaires parce que la maison ne se refuse rien. Ils sont sur un dépôt github avec les images de couvertures en version svg et png. Idéalement, ils devraient être sur un dépôt plutôt LinuxFr que celui-là.
Vous n’échapperez, évidemment, pas aux petits secrets d’ateliers en fin de dépêche.
Décès de Fredrik Lundh (Effbot), auteur des bibliothèques PIL et Tkinter
Fredrik Lundh était un contributeur Python ayant créé les bibliothèques de traitement d’image PIL et de GUI Tkinter. Il était connu pour avoir mis en ligne le site de tutoriel effbot.org couvrant ces bibliothèques. Son décès a été annoncé le 10 décembre 2021 sur la liste de diffusion des développeurs principaux du langage Python.
Python 3.10 est disponible
Python 3.10 (rc1) est sorti le 2 août 2021, après quinze mois de développement (dont cinq à cheval sur les bêta et les rc de Python 3.9). Il reste deux mois avec des candidats (RC) avant la sortie définitive, prévue le 4 octobre 2021.
Voyons ce que cette version apporte comme nouveautés…
Python — partie 9 ― formateur de code, analyse statique
Cette dépêche est la suite d’une série sur Python initiée en septembre 2019. Après un sommeil cryogénique d’un an et demi, on repart en forme avec d’autres contenus Python à vous proposer : actualité, bonnes pratiques, astuces, témoignages… Elle a été rédigée principalement à deux voix, Oliver et Philippe, qui vous font part de leur expérience sur les fonctions.
Cette dixième partie présente les formateurs de code bien pratiques et les analyseurs de code. 🐍 🐍 🐍
Pour rappel, les autres dépêches déjà publiées :
- Python — Popularité
- Python — Python 2
- Python — Installation de Python et de paquets
- Python — Py Pyenv
- Python — Nix (et Guix)
- Python — Pip et Pipx
- Python — environnements virtuels
- Python — Pipenv
- Python — Entretiens
Python — partie 6 — Pip et Pipx
Cette dépêche est la suite d’une série sur Python initiée en septembre 2019. Après un sommeil cryogénique de un an et demi, on repart en forme avec d’autres contenus Python à vous proposer: actualité, bonnes pratiques, astuces, témoignages…
Cette sixième partie explique les inconvénients de pip
et présente l’alternative pipx
, le tout avec plein d’astuces et de conseils pour bien s’en sortir. 🚀 🐍
Pour rappel, les dépêches précédentes :
- Python — partie 1 parlait de la popularité explosive du langage Python
- Python — partie 2 évoquait la fin du support de Python 2
- Python — partie 3 parlait des différentes façons d’installer Python et des gestionnaires de paquets Python
-
Python — partie 4 vous présentait
py
etpyenv
pour faciliter la gestion de plusieurs versions de Python en parallèle sur un poste - Python — partie 5 vous faisait découvrir un autre moyen de gérer l’installation en parallèle de différentes versions de Python
Sortie de Flask 2.0.0
Flask est un micro‐cadriciel Web pour Python publié sous licence BSD. Il est conçu pour permettre une prise en main rapide et facile, tout en offrant la possibilité d'évoluer vers des applications complexes. Il a commencé comme une simple « enveloppe » autour de Werkzeug et Jinja et est devenu l'un des cadriciel web Python les plus populaires.
Flask suggère mais n'impose aucune dépendance ou plan de projet. C'est au développeur de choisir les outils et les bibliothèques qu'il souhaite utiliser. Il existe de nombreuses extensions fournies par la communauté qui facilitent l'ajout de nouvelles fonctionnalités.
La version 2 est sortie le 11 mai 2021 soit 3 ans après la version 1.
Python — partie 10 — Entretiens
Pour cette dépêche, nous donnons la parole à celles et ceux qui pratiquent le langage de programmation Python : des développeuses et développeurs de différents domaines, mais aussi d’autres métiers comme les scientifiques des données (data scientists), les scientifiques de l’apprentissage automatique (machine learning), les analystes quantitatifs (quant)… et bien d’autres…
Python — partie 8 — Pipenv
Cette dépêche est la suite d’une série sur Python initiée en septembre 2019. Après un sommeil cryogénique de un an et demi, on repart en forme avec d’autre contenu Python à vous proposer: actualité, bonnes pratiques, astuces, témoignages…
Cette huitième partie présente pipenv
, un outil pour s’abstraire de pip
et virtualenv
qui est mis en valeur par la PyPA (Python Packaging Autority). Puis nous finirons la dépêche par un cas pratique avec conteneurisation via Docker, le tout avec plein d’astuces et de conseils pour bien s’en sortir. 🚀 🐍
Pour rappel, les dépêches précédentes :
- Python - partie 1 parlait de la popularité explosive du langage Python ;
- Python - partie 2 évoquait la fin du support de Python 2 ;
- Python - partie 3 parlait des différentes façons d’installer Python et des gestionnaires de paquets Python ;
-
Python - partie 4 vous présentaient
py
etpyenv
pour faciliter la gestion de plusieurs versions de Python en parallèle sur un poste ; - Python — partie 5 qui dissertait de Nix (et Guix) ;
- Python — partie 7 évoquait les environnements virtuels Python et ses alternatives comme la conteneurisation, le tout avec plein d’astuces et de conseils pour bien s’en sortir.
Python — partie 5 — Nix (et Guix)
Dans les précédentes dépêches, nous avons discuté de la popularité de Python, la fin de la maintenance de Python 2, les différentes variantes de Python, comment les faire cohabiter avec Py et Pipenv…
Dans la continuité de la précédente dépêche, cette dépêche présente une autre approche pour faire cohabiter différentes versions de Python sur un même ordinateur : Nix. 🚀 🐍 💫
Python — partie 7 — Environnements virtuels
PySimpleGUI : prenez plaisir à faire des interfaces graphiques en Python
Je cherchais depuis longtemps un moyen simple de créer des interfaces graphiques pas trop compliquées pour mes scripts Python. Les approches objet et/ou à base de langages dédiés (sur base XML par exemple) m'avaient plutôt rebutées jusqu'à présent, et malheureusement celles-ci sont ultra majoritaires. J'avais eu du mal à rentrer dans tkinter ou pyQT par exemple, et à les utiliser de manière efficace.
C'est alors que j'ai découvert, récemment, PySimpleGUI, et que j'ai enfin réussi à être productif en matière d'interface graphique en Python !
PySimpleGUI est sous licence LGPLv3.
Développer une interface web avec le toolkit Atlas (2/2)
Le toolkit Atlas permet de programmer des interfaces d’applications web monopages (SPA) sans qu’il ne soit nécessaire de savoir programmer en JavaScript et sans imposer d’architecture logicielle. De plus, toute application développée avec le toolkit Atlas est, dès son lancement, instantanément et automatiquement accessible d’Internet.
Le toolkit Atlas s’apparente à ces bibliothèques qui, en s’appuyant sur GTK, Qt, wxWidgets…, ont pour but de faciliter le développement d’interfaces graphiques. La différence est que le toolkit Atlas, lui, s’appuie sur les technologies web (HTML/CSS).
Le toolkit Atlas est disponible pour Java, Node.js, Perl, Python et Ruby. Ce document porte sur le développement, avec la version Python du toolkit Atlas, d’une application dont voici un aperçu :
Développer une interface web avec le toolkit Atlas (1/2)
Le toolkit Atlas permet de programmer des interfaces d’applications web monopages (SPA). Il est léger (quelques dizaines de Ko), sans dépendances, ne nécessite pas de savoir programmer en JavaScript, et n’impose pas d’architecture logicielle de type MVC.
En outre, toute application développée avec le toolkit Atlas est, dès son lancement, instantanément et automatiquement accessible de n’importe quel dispositif (smartphone, tablette…) équipé d’un navigateur web moderne connecté à Internet. Cet accès est facilité par un code QR qui s’affiche dans l’application.
Le toolkit Atlas a déjà fait l’objet de quelques publications ici même. Pour varier un peu les plaisirs durant ces longues soirées d’hiver de couvre-feu, voici la première partie d’un document qui devrait faciliter l’utilisation du toolkit Atlas. Il détaille le développement d’une application (très) basique de gestion de contacts, dont l’apparence est la suivante :
Le toolkit Atlas est disponible pour Java, Node.js, Perl, Python et Ruby. C’est la version la plus populaire, à savoir Python, qui est utilisée pour ce document. Cependant, l’API étant la même pour toutes les versions, on peut facilement le transposer aux autres langages disponibles.
Python 3.9 est disponible
Python 3.9 est sorti le 5 octobre 2020, après dix‑sept mois de développement.
Voyons ce que cette version apporte comme nouveautés…
Python dépasse Java en popularité selon l’indice TIOBE de novembre
Selon TechRepublic, qui commente la dernière édition de l’indice TIOBE qui mesure (de façon certes un peu opaque) la popularité des langages de programmation, Python vient de passer devant Java et est devenu deuxième derrière C. Preuve à la fois de la maturité du langage Python dans l’industrie et de la montée en force des usages pour lesquels il excelle (notamment l’apprentissage automatique).
Cela serait sans doute anecdotique si d’autres sources n’avaient pas également classé Python parmi les langages les plus dynamiques ces dernières années, notamment :
- IEEE Spectrum, qui l’a classé numéro 1 en 2020, 2019, 2018 et 2017 ;
- Stack Overflow, qui l’a classé, après une enquête auprès de ses utilisateurs en 2020, 3ᵉ « langage le plus aimé » et 1ᵉʳ « plus désiré ».
Par ailleurs, si vous utilisez Python et que vous souhaitez exprimer votre avis sur son évolution, il vous reste (à la date d’écriture de cette dépêche) deux jours pour participer à l’enquête annuelle de la PSF (Python Software Foundation) et de JetBrains auprès des développeurs Python.
Logiciel de gestion de moulin à huile
La verticalisation métier d’Odoo pour les moulins à huile sort de l’ombre ! Après la verticalisation métier d’Odoo pour les abbayes, l’abbaye du Barroux annonce la publication sous licence AGPL de la verticalisation métier d’Odoo pour les moulins à huile.
L’abbaye du Barroux, une abbaye bénédictine située près du mont Ventoux, possède et opère un moulin à huile. Il permet de fabriquer de l’huile d’olive à partir des olives récoltées par les moines et par des oléiculteurs situés à proximité. Un moulin à huile, comme toute usine agroalimentaire, se doit d’assurer une traçabilité de bout en bout, depuis le champ d’oliviers jusqu’à la bouteille d’huile. Il existe des logiciels métier spécialisés pour les moulins à huile, mais ils sont généralement propriétaires, anciens et ne fonctionnent que sous Windows. Les moines du Barroux, qui étaient déjà équipés d’Odoo, ont préféré investir dans le développement d’une verticalisation métier d’Odoo pour les moulins à huile et ont confié la réalisation de ce développement à la société Akretion. Cette verticalisation métier tire parti de la gestion de stock et de production d’Odoo qui assure la traçabilité par lots et la gestion des dates de péremption. Elle est complètement intégrée avec le module de facturation d’Odoo.
Cette verticalisation a subi son baptême du feu lors de la campagne 2018, et a été perfectionnée lors de la campagne 2019. Elle continue d’être améliorée en vue de la campagne 2020 qui démarrera fin octobre et dure deux mois.
Analysez vos tests #Python avec pytest‑monitor
Pytest‑monitor est une toute nouvelle extension pour Pytest, le cadriciel de test du langage Python, qui vous permet d’analyser l’utilisation des ressources de la machine exécutant les tests.
Pour le moment, trois ressources sont surveillées et historisés par cette extension :
- le temps d’exécution ;
- la consommation mémoire ;
- l’utilisation du processeur.
Chaque résultat étant attaché à un environnement d’exécution, il est facile de comparer l’impact du matériel utilisé pour faire tourner vos tests.