Votre navigateur n'est pas à jour !

Merci de mettre à jour votre navigateur pour utiliser mon blog. Mettre à jour mon navigateur maintenant

×

Python -Les usages du format TOML

Date de publication 13 déc. 2022
Vous devez de plus en plus voir un fichier pyproject.toml dans vos projets python. Mais à quoi sert-il ? Pourquoi le voit-on plus régulièrement ?

Metadata


Ce format est régi par la PEP 621 pour gérer les métadata du projet comme le README, la description ou la version du projet.

Ces informations nous les retrouvons habituellement dans le setup.py


Nous allons voir un peu plus loin l'alternative avec pyproject.toml

Build


Nous venons de voir le fichier setup.py et ce fichier peut également contenir les informations du build.

Les outils distutils / setuptools permettent de gérer le build d'une application mais ils ont des lacunes qui rend complexe son utilisation. Le fichier setup.py permet de configurer notre projet au travers ces outils.

Afin de simplifier son usage la PEP 518 et PEP 517 s'appuient sur pyptoject.toml pour configurer le projet

Le gestionnaire de package pipenv que j'utilise ne gère pas le pyproject.toml puisqu'il respecte le standard du Pipfile PEP 508
Par contre, la librairie poetry fait cela. Son comportement est proche de pipenv (gestion variable d'env, espace virtualisation, packages...) mais il stockera les dépendances dans ce fameux fichier pyproject.toml.

L'avantage du pyproject.toml est que l'on peut avoir 1 seul fichier de configuration pour le lint, formatteur, test, dépendances ...

pyproject.toml


Avoir toute la configuration dans un seul et même fichier facilite la maintenance et la compréhension. Le seul prérequis est de vérifier que la librairie dont vous souhaitez mettre la configuration dans ce fichier pyproject.toml respecte ce standard.
Il faut vous reporter à la documentation pour connaitre les propriétés.
Le linter flake8 par exemple n'est pas compatible avec le fichier pyproject.toml. Il faut donc passer par un script spécifique pyproject-flake8 afin de le configurer via ce fichier.

Voici un exemple de fichier
blog comments powered by Disqus