Des nouvelles de WeasyPrint, ou comment développer du libre à (presque) plein temps

Posté par  . Édité par Benoît Sibaud, Xavier Teyssier et Ysabeau 🧶 🧦. Modéré par Ysabeau 🧶 🧦. Licence CC By‑SA.
Étiquettes :
92
22
sept.
2022
Python

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.

L’installation et la distribution de paquets Python (1/4)

Posté par  . Édité par Benoît Sibaud, alberic89 🐧, L'intendant zonard, nonas, palm123 et gUI. Modéré par Ysabeau 🧶 🧦. Licence CC By‑SA.
92
6
nov.
2023
Python

Quelques dépêches précédentes ont parlé des outils de packaging Python, comme ici, ou encore . 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.

Python 3.2

Posté par  (site web personnel) . Modéré par Lucas Bonnet.
88
21
fév.
2011
Python

Un an et sept mois après Python 3.1, voici une nouvelle version majeure de Python 3 : la version 3.2. Elle apporte notamment deux nouveaux modules (argparse et concurrent.futures), des améliorations sur les extensions écrites en C (API stable et marquage dans le nom de fichier des bibliothèques) et les modules compilés (fichiers .pyc) sont désormais rangés dans un dossier « __pycache__ ». Pour rappel, Python 3 corrige les erreurs de jeunesse de Python et harmonise la bibliothèque standard (relire la dépêche annonçant Python 3.0).

Pour faciliter le travail des développeurs des autres implémentations de Python (IronPython, Jython, Unladen Swallow, PyPy), la syntaxe, la sémantique et les fonctions builtins n'ont pas changé dans version 3.2, comme décidé par le moratoire (PEP 3003: Python Language Moratorium). Le moratoire prend fin avec la publication de Python 3.2.

La seconde partie de la dépêche présente en détail les nouveautés de Python 3.2, l'état du portage des modules vers Python 3, et évoque ce qui est prévu pour la suite.

Python 3.8 : opérateur d’assignation, REPL async, Pickle v5 et plus

Posté par  . Édité par Ysabeau 🧶 🧦, palm123, Davy Defaud, Benoît Sibaud, patrick_g et Pierre Jarillon. Modéré par Ysabeau 🧶 🧦. Licence CC By‑SA.
Étiquettes :
80
15
oct.
2019
Python

Łukasz Langa vient d’annoncer au nom de la PSF la disponibilité de CPython 3.8, l’implémentation de référence. Cette version est particulière puisqu’elle introduit une syntaxe controversée : l’assignation avec l’opérateur := qui permet d’assigner dans une expression et plus seulement dans un statement.

Le nombre de changements est assez impressionnant. Malgré la maturité de Python et sa popularité, il y a encore à faire !

Pour les systèmes stables, la version de référence reste la 3.6. Pour les autres, profitez de pyenv ou Docker pour utiliser les nouveautés de ce bon cru ! Découvrez‐les dans la suite de cette dépêche.

Python 3.4 est sorti avec 7 nouveaux modules

Posté par  (site web personnel) . Édité par Davy Defaud, Benoît Sibaud, Nils Ratusznik, BAud, NeoX, claudex, palm123, Nonolapéro, jihele, Philippe F et tuiu pol. Modéré par tuiu pol. Licence CC By‑SA.
Étiquettes :
75
19
mar.
2014
Python

En termes de nouveautés, Python 3.4 est la version de Python qui en apporte le plus ! Il n’y a pas moins de 7 nouveaux modules entre Python 3.4 et 3.3 (séparés de 18 mois), tandis qu’entre Python 3.3 et Python 2.7 (séparés de 27 mois) il y en a huit. En termes de propositions d’améliorations de Python, 14 PEP (Python Enhancement Proposals) ont été implémentées dans Python 3.4. Cette version donne un sérieux coup de vieux à Python 2.7. La 2e partie de la dépêche détaille les principales nouveautés et la manière dont Python est développé.

Mon article Why should OpenStack move to Python 3 right now?, cité ci‐dessous, explique pourquoi Python 2 est désuet et pourquoi vous devez porter dès maintenant vos applications sur Python 3. L’article a été écrit pour le projet OpenStack mais reste général.

Sortie de Python 3.7

74
10
sept.
2018
Python

Python 3.7 a été publié le 27 juin 2018, soit un an et demi après la précédente version. Celle‐ci vient avec son lot de nouveaux modules et fonctionnalités que nous détaillons dans la suite de la dépêche.

Logo de Python

Entretien avec les développeurs Python francophones

Posté par  (site web personnel) . Modéré par Lucas Bonnet.
66
16
avr.
2011
Python

Le 11 mars, nous vous proposions de poser des questions à des développeurs francophones du langage Python. Un peu occupés par leur participation à PyCon 2011, ils ont finalement trouvé le temps de vous répondre. Un grand merci à eux et à tous ceux qui ont posé les questions.


L'ensemble des réponses de l'entretien est en seconde partie et est placé sous licence Art Libre : cette œuvre est libre, vous pouvez la copier, la diffuser et la modifier selon les termes de la Licence Art Libre.

L'installation et la distribution de paquets Python (2/4)

Posté par  . Édité par Benoît Sibaud, Nils Ratusznik et Ysabeau 🧶 🧦. Modéré par Ysabeau 🧶 🧦. Licence CC By‑SA.
65
21
déc.
2023
Python

Cette dépêche est la deuxième d’une série de quatre sur le packaging en Python :

  1. L’histoire du packaging Python
  2. Tour de l’écosystème actuel
  3. Le casse-tête du code compilé
  4. 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.

Python pour les sciences, une présentation

64
18
fév.
2019
Python

La sortie de Pandas 0.24.1 est l’occasion de parler de Python et du traitement des données scientifiques. Depuis quelques années, un certain nombre de projets ont émergé afin d’équiper Python pour les mondes de la recherche. Cette dépêche présente quelques‐uns de ces projets. Des ressources pour aller plus loin sont proposées en fin de dépêche.

Python 3.3 est sorti

61
2
oct.
2012
Python

La version 3.3 de Python est sortie ce 29 septembre. Pour rappel, Python « est un langage de programmation multi‐paradigme. Il favorise la programmation impérative structurée et orientée objet. Il est doté d’un typage dynamique fort, d’une gestion automatique de la mémoire par ramasse‐miettes et d’un système de gestion d’exceptions ; il est ainsi similaire à Perl, Ruby, Scheme, Smalltalk et Tcl ». Merci Wikipédia.

Cette version 3.3 est donc la nouvelle version de production de la branche 3. Elle cohabite avec la version 2.7.3 de la branche 2.7. Cette nouvelle version apporte, entre autres, les fonctionnalités suivantes :

  • amélioration de la syntaxe des générateurs ;
  • un module venv capable de créer des environnement Python virtuels, tout comme VirtualEnv ;
  • revue du stockage interne des caractères, ce qui permet d’économiser de la mémoire ;
  • nouvelle façon de définir et placer les paquets d’un projet Python ;
  • des améliorations concernant l’API du module os, ainsi qu’une remise à plat des Exceptions concernant les entrées‐sorties ;
  • amélioration de l’intégration Windows ;
  • fonction de hachage aléatoire activée par défaut (permettant de se prémunir contre l’attaque des dictionnaires et des tables de hachage) ;
  • et bien d’autres…

Retrouvez en seconde partie de dépêche une liste plus complète des nouveautés.

NdA : Merci à FlashCode, Antoine, Victor Stinner, Laurent Pointal, Emmanuel C, jcr83, Amine « nh2 » Brikci‐Nigassa, GeneralZod, crep4ever, Nÿco et Le Cancre Las pour leur participation active à cette rédaction en collaboration.

Décès de Fredrik Lundh (Effbot), auteur des bibliothèques PIL et Tkinter

Posté par  . Édité par Yves Bourguignon, Nÿco, Ysabeau 🧶 🧦, Barnabé et Naone. Modéré par Ysabeau 🧶 🧦. Licence CC By‑SA.
59
16
déc.
2021
Python

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.

PySimpleGUI : prenez plaisir à faire des interfaces graphiques en Python

Posté par  . Édité par Benoît Sibaud. Modéré par palm123. Licence CC By‑SA.
57
30
jan.
2021
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.

Parution de Python 3.5

Posté par  . Édité par Benoît Sibaud, palm123, Snark, M5oul, bubar🦥, jcr83, Davy Defaud, Nÿco, Lucas et Pierre Jarillon. Modéré par Benoît Sibaud. Licence CC By‑SA.
Étiquettes :
55
22
sept.
2015
Python

La version officielle de Python 3.5 est parue le 13 septembre 2015, presque un an après la publication de la Python Enhancement Proposals (PEP) 0478 qui annoncait le planning de cette dernière, et un peu plus de 8 mois après la première alpha (du 8 février 2015).

Python

Voyons dans la suite de cette dépêche les nouveautés introduites par cette version.

Première version stable pour WeasyPrint

Posté par  . Édité par ZeroHeure, Davy Defaud et palm123. Modéré par Pierre Jarillon. Licence CC By‑SA.
54
9
nov.
2018
Python

WeasyPrint est un générateur de documents : il transforme des pages HTML/CSS en PDF. Il peut être utilisé en ligne de commande ou comme bibliothèque Python. Et son histoire est très intéressante, laisse‐moi donc te la conter…

Logiciel de gestion de moulin à huile

Posté par  (site web personnel) . Édité par Davy Defaud et Ysabeau 🧶 🧦. Modéré par Pierre Jarillon. Licence CC By‑SA.
Étiquettes :
54
11
juil.
2020
Python

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.

Un projet de VM Python chez Dropbox et état des lieux des autres VM

Posté par  (site web personnel) . Édité par palm123, BAud, Nÿco, sleibo, Nonolapéro, Maxime et Jiehong. Modéré par ZeroHeure. Licence CC By‑SA.
50
12
avr.
2014
Python

Dropbox lance PySton, une nouvelle implémentation de Python, basée sur LLVM, avec comme objectif de tirer partie des capacités JIT (Just-In-Time compiling, compilation à la volée) de l'architecture LLVM. Le but étant à terme d'utiliser Python là où du C++ était encore utilisé pour ses performances.

La suite de la dépêche fait un état des lieux des différentes VM Python et des projets d'améliorations de leur performances.

Python 3.10 est disponible

50
4
août
2021
Python

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…

Logo Python

Python 3.9 est disponible

Posté par  (site web personnel, Mastodon) . Édité par Benoît Sibaud, palm123, Davy Defaud, ariasuni, Ysabeau 🧶 🧦, bobble bubble et Snark. Modéré par claudex. Licence CC By‑SA.
Étiquettes :
49
9
déc.
2020
Python

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…

Logo Python

Sortie de R.A.S. v0.1

Posté par  (site web personnel) . Édité par palm123, Benoît Sibaud, NeoX et claudex. Modéré par claudex. Licence CC By‑SA.
Étiquettes :
49
13
oct.
2013
Python

Le logiciel RandoAmis.Secours (aka R.A.S.) vient de sortir en version 0.1, c'est donc la première release.

Qu'est ce donc ?

R.A.S. est un site web permettant de déclarer les sorties (montagne, canyon, escalade, ski de rando, …) que vous allez faire prochainement. Pour chaque sortie, un descriptif de la sortie ainsi que la localisation sur la carte sont déterminé. De plus 3 horaires sont à définir :

  • le début
  • la fin
  • l'alerte

Si par malheur, vous ne rentrez pas de votre sortie (par exemple à cause d'un accident), R.A.S. enverra des courriels à vos contacts, dès la date d'alerte passée.

Pourquoi ?

Je me suis récemment rendu compte que lors de sorties en montagne, les seules personnes au courant de cette sortie sont généralement également présentes à cette sortie. En cas de problème, il n'y a donc personne capable d'alerter les secours de notre absence.
Sachant que les téléphones portables ne passent souvent pas bien en montagne, il me fallait donc un système capable d'alerter mes proches en cas de problème.

Weboob a dix ans !

Posté par  . Édité par Davy Defaud, ZeroHeure, Julien Jorge, Bruno Michel, Ysabeau 🧶 🧦 et palm123. Modéré par Davy Defaud. Licence CC By‑SA.
Étiquettes :
48
12
fév.
2020
Python

Logo Weboob

Cela fait dix ans jour pour jour que ce qui initialement était un bête script « dlfp2mail » a été renommé « Weboob », pour « Web Outside of Browsers », avec un objectif plus ambitieux : être une bibliothèque d’APIsation du Web.

Celle‑ci propose aujourd’hui quarante capabilities, qui sont une manière de standardiser les modèles de données et les interactions avec des sites proposant une capacité donnée, par exemple la vidéo, les actualités, l’émission de factures, la gestion de contacts, la banque, etc.

La bibliothèque intègre également de base 254 modules qui, chacun, interagit avec un site Web donné. Un module va implémenter une ou plusieurs capability : par exemple, Youtube implémente juste CapVideo, mais BNP implémente CapBank, CapDocument, CapProfile, CapContact et CapMessages.

Enfin, il existe 50 applications builtin qui s’interfacent avec les capabilities pour interagir avec les modules qui les implémentent. Par exemple, Boobank est une application en ligne de commande pour consulter et exporter ses comptes bancaires, QVideoob est une application Qt pour rechercher des vidéos, tandis que Monboob est un démon qui consulte régulièrement les sites d’actualité ou proposant une messagerie, et les envoie par courriel.

Mais la plus grande force de Weboob réside dans le fait qu’il s’agisse d’une bibliothèque. Ainsi, il est possible d’enrichir des logiciels existants avec cette capacité d’interagir avec des sites Web derrière une couche d’abstraction. Ainsi, dès qu’un nouveau module est créé, toutes les applications gérant au moins une des capabilities qu’il implémente vont automatiquement pouvoir en profiter.

À l’occasion de ce dixième anniversaire, la version 2.0 de Weboob est parue.

VenC 3.1.1 | Un nouveau générateur de site statique

Posté par  (site web personnel) . Édité par Ysabeau 🧶 🧦, orfenor et Benoît Sibaud. Modéré par Ysabeau 🧶 🧦. Licence CC By‑SA.
46
1
fév.
2024
Python

VenC

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.

IPython est mort, vive IPython 4.0

Posté par  . Édité par palm123, emilien.schultz, Benoît Sibaud, Nÿco, ZeroHeure, zurvan, Snark et jcr83. Modéré par bubar🦥. Licence CC By‑SA.
45
19
août
2015
Python

Pour ceux qui ne connaissent pas IPython et son historique, je vous propose de consulter les dépêches précédentes, car si à l'origine il s'agissait uniquement d'une console évoluée pour Python, l'envergure des possibilités a bien changé entre-temps. Cette nouvelle version revient doucement aux sources en diminuant considérablement les fonctionnalités présentes.

Il y a quelques mois, une description de ce que pouvait faire IPython aurait pris plusieurs heures d'explication sur le notebook, protocole de communication, qtconsole, etc. depuis cette nouvelle version IPython n'est plus qu'une console évoluée pour Python. On remarquera que c'est plus proche de la philosophie Unix : "Ne faire qu'une seule chose, et la faire bien".

Vu qu'il y a peu de nouvelles fonctionnalités dans cette nouvelle version, je ne vais pas m'attarder trop dessus. Et plutôt décrire les changements opérés.

Merci a emilien.schultz, Nÿco, palm123, zurvan, jcr83 et Snark pour avoir participé à la rédaction.

Python pour la rentrée 2019 — partie 1 ― Popularité

Posté par  (site web personnel) . Édité par M5oul, Ysabeau 🧶 🧦, theojouedubanjo, Benoît Sibaud, Davy Defaud, Nÿco et palm123. Modéré par Nÿco. Licence CC By‑SA.
43
4
sept.
2019
Python

Pour cette rentrée 2019, faisons le point sur Python : actualité, bonnes pratiques Python, astuces, projets intéressants, témoignages…

Cette première partie présente la popularité de Python, chiffres à l’appui. Mais qu’est ce qui explique qu’un vieux langage de vingt‐cinq ans, lent et dont l’indentation influence la compilation, puisse être aussi populaire ?

Un barbu présente le logo de Python

Sortie de Flask 0.11

Posté par  . Édité par dovik, palm123, Nils Ratusznik, Nÿco et Stefane Fermigier. Modéré par bubar🦥. Licence CC By‑SA.
Étiquettes :
43
15
juin
2016
Python

Flask est un micro-framework web pour Python publié sous licence BSD. Il est basé sur Werkzeug, Jinja2, MarkupSafe, ItsDangerous et Click.

La version 0.11 de Flask a été publiée le 29 mai 2016, sous le nom de code « Absinthe ». La version précédente, la 0.10.1, remontait au 14 juin 2013, soit presque trois ans.

Flask

Sortie de Django 1.3

Posté par  (site web personnel) . Modéré par Xavier Teyssier. Licence CC By‑SA.
Étiquettes :
42
24
mar.
2011
Python

Mercredi matin, 11 mois après la 1.2, est sortie la version 1.3 du framework Web Django, écrit en Python.

Ce framework, basé sur un concept [Modèle-Vue-Contrôleur], est conçu pour le développement rapide et reprend la plupart des grands principes de Python (« Explicit is better than implicit », notamment), ce qui en fait la plate-forme de développement Web idéale pour les perfectionnistes sous pression.

De plus en plus de sites utilisent Django (par exemple, Bitbucket.org, Libération.fr, Disqus, Century21, convore, instagram, threadless…) pour sa flexibilité et pour le nombre d’applications Django réutilisables, qui ne cesse de croître.

Je vous propose de découvrir les quelques nouveautés que vous offrent les développeurs Django et toute la communauté.