Au revoir, et merci pour tout le poisson, setup.cfg !

Il y a quelques heures deux évènements magiques se sont produits :

Ça signifie qu’on peut enfin configurer un projet avec un seul fichier (le pyproject.toml) !

Bon pour ceux qui ont encore un setup.py utilisez d’abord setup-py-upgrade pour le convertir en setup.cfg

Et il existe déjà un outil pour convertir un setup.cfg en pyproject.toml : ini2toml, ça s’utilise comme ça :

python -m pip install ini2toml[lite]
ini2toml setup.cfg >> pyproject.toml

(et puis relisez votre pyproject.toml qui aura typiquement la section [build-system] en double à fusionner à la main, et peut être quelques petites retouches stylistiques à faire.)

J’ai testé pour vous sur mon projet de test, oeis, voilà le commit :

Et … ça marche !!

5 « J'aime »

En deux mots, qu’est-ce qui nous empêchait d’utiliser correctement pyproject.toml (que j’utilisais alors que visiblement c’était un peu tôt…) ?

Merci pour la procédure de mise à jour (quasi) automatique.

Avant setuptools 61, tu pouvais utiliser correctement pyproject.toml pour packager via poetry, bento, flit, etc…

Avant setuptools 61, tu pouvais utiliser correctement pyproject.toml pour packager avec setuptools mais avec un fichier setup.cfg en plus.

Maintenant tu peux utiliser pyproject.toml pour packager avec setuptools sans setup.cfg ni setup.py:

[build-system]
requires = ["setuptools >= 61", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = ...

En stockant les infos du projet dans le pyproject.toml en respectant la PEP 621 – Storing project metadata in pyproject.toml | peps.python.org

J’avais même pas vu que c’était une nouvelle PEP pour le pyproject.toml, et j’en étais resté à utiliser poetry, sans trop me poser de question. Je vois d’ailleurs que le créateur de poetry a co-écrit cette PEP 621.

Merci pour ces infos, ils ont eu une super idée de standardiser tout ça, ça va faciliter l’interopérabilité.

Bon, il ne me reste plus qu’à lire la PEP en entier :wink: