Ce que fait l’outil
Le formateur Python réécrit du code Python dans le style Black, très répandu : indentation cohérente, espaces autour des opérateurs, guillemets doubles, deux lignes vides entre les définitions de premier niveau et longues lignes coupées aux endroits judicieux.
En coulisses, il exécute le formateur de Ruff, le linter et formateur Python ultrarapide écrit en Rust, compilé en WebAssembly. La sortie de Ruff correspond à Black presque ligne pour ligne : le code formaté ici ne sera pas reformaté par le hook de pre-commit de votre projet.
Mode d’emploi
- Collez du code Python ou ouvrez un fichier
.py. - Le code formaté apparaît à droite pendant la saisie.
- Ajustez les options si votre projet utilise un autre style :
- Indentation : 4 espaces, c’est PEP 8 et la valeur par défaut ; 2 espaces et les tabulations sont disponibles.
- Largeur de ligne : 88 est la valeur par défaut de Black, 79 la limite de PEP 8, et 100 ou 120 conviennent aux écrans plus larges.
- Guillemets : doubles, simples, ou conserver les guillemets de chaque chaîne.
- Respecter les virgules finales : garder développées les collections qui se terminent par une virgule.
- Copiez ou téléchargez le résultat.
Quand le code ne peut pas être analysé, le message d’erreur indique où le parseur s’est arrêté, par exemple Expected `,`, found `=` à la ligne 4, et vous pouvez sauter à cette ligne.
Exemple
L’exemple est un petit module écrit à la va-vite : des imports sur une ligne sans espaces, une dataclass avec une espace avant les deux-points, une méthode indentée de deux espaces et une instruction if sur une ligne. Après formatage, chaque bloc utilise une indentation de quatre espaces, le corps du if passe sur sa propre ligne, les opérateurs reçoivent des espaces, les guillemets simples deviennent doubles et des lignes vides sont ajoutées entre la classe et les fonctions. La liste qui se terminait par une virgule finale est développée avec un dictionnaire par ligne.
Ce que le formateur ne fait pas
Le formatage ne modifie que la mise en page. Il ne trie pas les imports, ne supprime pas les variables inutilisées et ne renomme rien : c’est le rôle d’un linter (ruff check --fix s’en charge). Les commentaires et docstrings sont conservés, et le formateur refuse de modifier du code qu’il ne peut pas analyser plutôt que de deviner.
Astuces
- Utilisez la même largeur de ligne que le
pyproject.tomlde votre projet pour que le résultat corresponde à votre CI. - Formater un extrait avant de le poster dans une question ou une revue le rend beaucoup plus lisible.
- Si le code vient d’un notebook ou d’un chat et mélange tabulations et espaces, le formateur le normalise en une seule étape.
FAQ
› La sortie est-elle identique à celle de Black ?
Le formateur de Ruff est conçu pour remplacer Black à l'identique et produit la même sortie sur plus de 99,9 % des lignes de grands projets réels. Les réglages par défaut ici (indentation de 4 espaces, 88 colonnes, guillemets doubles) sont ceux de Black.
› Qu'est-ce que la « magic trailing comma » ?
Si une liste, un appel ou une définition se termine par une virgule finale, Black et Ruff le gardent développé avec un élément par ligne, même s'il tiendrait sur une ligne. Désactivez l'option pour replier ces collections dès qu'elles tiennent.
› Quelles versions de Python sont prises en charge ?
Le parseur comprend la syntaxe Python 3 moderne, y compris les instructions match, les listes de paramètres de type et les f-strings avec guillemets imbriqués. Du code Python 2 comme `print "x"` est une erreur de syntaxe.
› Mon code est-il envoyé ?
Non. Le module WebAssembly de Ruff est téléchargé une fois et le formatage s'exécute dans votre navigateur.