- Les nouvelles versions de uv proposent de manière expérimentale une fonctionnalité de formatage de code
- La commande
uv formats’appuie en interne sur le formateur de Ruff pour appliquer un style cohérent au code Python - Il devient possible d’organiser son code simplement avec uv seul, sans outil séparé supplémentaire
- Les utilisateurs peuvent ajuster finement le comportement du formatage via des arguments additionnels
- Comme il s’agit encore d’une fonctionnalité expérimentale, la syntaxe de commande, la gestion des erreurs et d’autres aspects peuvent encore évoluer
Aperçu
La dernière version de uv (0.8.13) introduit uv format, une commande expérimentale que les développeurs Python attendaient depuis longtemps. Cette fonctionnalité permet de mettre en forme le style du code avec uv seul, sans avoir à gérer un outil de formatage supplémentaire dans le projet.
Qu’est-ce que uv format ?
- La commande
uv formatpermet le formatage du code Python via l’interface de uv - En interne, elle invoque le formateur de Ruff pour réorganiser automatiquement le code de manière cohérente
Remarques pour les développeurs
Charlie Marsh (développeur de uv) l’a expliqué ainsi sur Hacker News :
Ruff et uv ne fusionnent pas, et restent des outils distincts
L’objectif est simplement d’améliorer l’expérience afin que les utilisateurs puissent utiliser le formateur sans le percevoir comme un outil séparé
La relation est similaire à celle entre cargo fmt et rustfmt dans l’écosystème Rust
Mode d’emploi
- Il faut utiliser uv en version 0.8.13 ou supérieure
- Exécuter la commande
uv formatà la racine du projet revient à lancer ruff format - Le mode d’exécution suit l’interface de commande de uv
Transmission d’arguments supplémentaires
- Avec la forme
uv format -- [arguments supplémentaires], il est possible de définir des options détaillées transmises à Ruff - On peut ainsi profiter à la fois de la simplicité de uv et de la configuration fine de Ruff
Indications sur la phase expérimentale
- La fonctionnalité est actuellement en phase expérimentale, et la syntaxe de commande ou la manière d’intégrer la structure du projet pourraient évoluer à l’avenir
- La gestion des erreurs, le format de sortie et d’autres points doivent aussi être améliorés en continu
- La fonctionnalité devrait évoluer en tenant compte des retours des utilisateurs
Conclusion
- Si un projet Python a besoin d’un formatage de code simple et cohérent,
uv formatmérite clairement d’être essayé - Comme il s’agit d’une introduction expérimentale, l’utiliser puis partager son retour peut contribuer à l’évolution future de uv
1 commentaires
Avis Hacker News
rufffusionnait avecty;uvdevrait se concentrer sur la gestion des paquets ou des projets, et ne pas aller jusqu’au style du code ; à mon avis, le seul cas oùuvdevrait modifier des fichiers source, c’est lors des mises à jour de dépendances (PEP 723)ruffetuvne fusionnent pas et resteront des outils séparés ; le but est simplement d’offrir une expérience plus simple aux utilisateurs qui ne veulent pas se préoccuper d’un formateur séparé ; c’est comparable à Rust, oùcargo fmtexécuterustfmten internecargo fmtexiste dans l’écosystème Rusttyfinira par être intégré àuv; comme tout cela vient d’astral.sh, c’est peut-être la vision, mais pour l’instant ty ne semble pas encore prêtuv lintqui exécuteraittyen interne ; idéalement, on devrait pouvoir préparer un projet Python (formatage, lint, tests, publication) avec une commande standard ou une petite série de commandes ; c’est peut-être la vision derrière tout celauv run --no-projectetuv run --active, par exemple) ; plutôt que d’ajouter sans cesse de nouvelles fonctionnalités, j’aimerais qu’on se concentre davantage sur les outils existants et sur l’amélioration de la documentationuvx ruff formatfasse un mot de plus soit vraiment un problème ; en revanche, ce qui peut être plus déroutant, c’est qu’on ne sache plus clairement quel formateur est réellement exécuté, si ruff est installé automatiquement, ou si, comme avant, l’outil est téléchargé et mis en cacheuv formatne fonctionnera pasuv <fonction>aide énormément l’équipe ; j’aimerais aussi que l’intégration avec d’autres formateurs soit possible, et si cela allait jusqu’au formatage des modèles SQL/dbt, ce serait parfait ; pour l’instant, je vais l’essayer et voir jusqu’où cela peut allerjust formatpour formater Python/SQL/Bash/TypeScript en une seule foisuv formatest en pratique un raccourci pouruv run --with ruff ruffuv fmt, et j’ajouterais aussi quelque chose commeuv vetà la feuille de routeuv formatest plutôt un frontend pourruff format, rien de plus ; cela n’ajoute pas un nouveau formateurruff format, que beaucoup de personnes utilisent déjà