Avec l’arrivée de UV, l’écosystème Python entre dans une phase de transformation. Ultra-rapide, moderne et pensé pour simplifier la vie des développeurs, ce nouveau gestionnaire de packages est en train de redéfinir nos habitudes de travail et s’imposer comme la référence incontournable.

Dans ce court article, je voulais revenir brièvement sur UV. La première fois que j’ai entendu parler de cet outil, c’était sur la chaîne ArjanCodes, qui regorge de bonnes pratiques de programmation, de présentations de librairies et d’outils.

Créé par la société Astral, UV est un gestionnaire de packages pour Python écrit en Rust, inspiré par la toolchain de ce dernier.

Des environnements virtuels en un éclair

Je me souviens, il n’y a pas si longtemps, on partageait encore les dépendances des projets dans de simples fichiers requirements.txt. Et quand ce fichier manquait… on était un peu coincés.

Depuis, la PEP 621 a changé la donne. Par défaut, lorsque vous initialisez un projet avec uv init, ce fichier est désormais présent.

Comme tout bon projet Python, il faut ensuite mettre en place un environnement virtuel. Rien de plus simple avec UV : une simple commande uv venv suffit. Pas besoin d’installer un module supplémentaire, c’est aussi direct que ça.

Pour ajouter des dépendances, uv add <package> et préparez-vous, c’est très rapide. La première fois, je me suis même demandé s’il n’y avait pas eu un bug tant l’installation a été instantanée.

Shows a bar chart with benchmark results.
Benchmark présenté par Astral

Et pour charger toutes les dépendances, rien de plus simple : uv sync.

Un code toujours impeccable

Côté formatage et linting, vous connaissez sans doute Black ou Flake8. Mais Astral propose aussi sa propre solution : Ruff.

Les performances sont impressionnantes, et surtout, vous n’avez besoin que d’un seul outil.

Shows a bar chart with benchmark results.
Performances de Ruff présentées par Astral

Vous disposez d’une multitude de règles pour adapter votre codebase à vos besoins.

Cerise sur le gâteau : Astral pense à vous et donne plusieurs tutoriels pour intégrer Ruff à votre éditeur préférer.

Le packaging, sans prise de tête

Pendant longtemps, créer une librairie Python pouvait sembler complexe et un peu fastidieux.

Avec UV, ce temps est révolu : uv build et uv publish rendent le packaging et la publication simples et rapides.

Et pour aller encore plus loin, Astral fournit son propre backend de packaging, lui aussi blazingly fast.

Conclusion

Bien que certaines critiques puissent être formulées du fait de sa jeunesse, uv reste pour moi un incontournable pour mes futurs projets Python.

J’ai également conçu un template pour mes futurs projets Python, disponible sur mon GitHub. Il inclut notamment :

  • Ruff pour assurer la qualité du code
  • Une structure de tests prête à l’emploi
  • Pre-commit pour garantir la qualité de chaque commit
  • Une intégration continue fonctionnelle avec GitHub Actions
GitHub - CharlyGin/say_hello: Template Python Package using UV
Template Python Package using UV. Contribute to CharlyGin/say_hello development by creating an account on GitHub.

Sources