# Formateur Python

URL: https://discuvr.org/python-formatter/?hl=fr
Last updated: 2026-11-07
MCP tool: `format_python`

Collez du Python, Black le formate selon votre longueur de ligne. Les erreurs de syntaxe donnent la ligne exacte. Le code n'est jamais exécuté ni stocké.

Cet outil exécute Black, le formateur sur lequel la plupart des projets Python s'accordent déjà, sur ce que vous collez, avec la longueur de ligne et la gestion des guillemets que vous choisissez. Si le fichier ne s'analyse pas, il indique la ligne concernée, et s'il est déjà formaté, il le dit aussi plutôt que de prétendre avoir fait quelque chose.

## Ce qu'il fait

- Formatage Black à 79, 88, 100 ou 120 colonnes.
- Mode "vérification seule" : savoir si un fichier changerait sans le modifier.
- Conservez votre propre style de guillemets, ou laissez Black le normaliser.
- Respectez ou ignorez la virgule finale magique qui maintient une collection dépliée.
- Ciblez une version spécifique de Python lorsque la syntaxe dépend de la version.
- Les erreurs de syntaxe indiquent la ligne, la colonne et le code environnant.
- Indique combien de lignes ont été ajoutées et supprimées, plus la forme du fichier.

## Comment ça marche

1. Collez le code, ou tout un fichier.
2. Choisissez une longueur de ligne et les options qui vous intéressent.
3. Appuyez sur Formater, puis copiez ou téléchargez le résultat.

## Votre code n'est jamais exécuté

Formater du Python ne nécessite pas de l'exécuter. Le code est analysé en un arbre syntaxique puis réécrit à partir de cet arbre, entièrement en mémoire - il n'est jamais écrit dans un fichier, jamais importé et jamais exécuté. Un formateur qui exécuterait ce que vous avez collé serait un shell distant avec une zone de texte.

## Pourquoi Black, et non une opinion qui nous appartient

Black est une transformation qui préserve l'AST : le code produit est le même programme que celui fourni. Cette propriété est la seule raison pour laquelle on peut faire confiance à un formateur, et c'est pourquoi aucun modèle de langage n'intervient nulle part dans cet outil. Un modèle chargé de nettoyer du code réécrira parfois une ligne au passage, et une modification silencieuse d'un code qui fonctionne est l'unique échec qu'un formateur ne peut pas se permettre.

## Vérification seule

La même question que pose la CI : ce fichier changerait-il ? Le mode vérification renvoie votre code original intact et indique si Black l'aurait reformaté, et de combien de lignes. C'est le moyen rapide de comprendre pourquoi un pipeline échoue sur un fichier que vous ne pouvez pas reproduire localement.

## Virgule finale magique et fmt: off, exemples concrets

Une virgule après le dernier élément indique à Black de garder un appel ou une collection à raison d'un élément par ligne : result = compute(alpha, beta,) revient sur quatre lignes, avec alpha, et beta, chacun sur sa propre ligne. Cochez Ignorer la virgule finale magique et la même entrée devient result = compute(alpha, beta) dès qu'elle tient dans la longueur de ligne. Pour protéger un bloc aligné à la main, comme une matrice, placez # fmt: off sur la ligne au-dessus et # fmt: on en dessous : Black laisse tout ce qui se trouve entre les deux tel que vous l'avez écrit ; # fmt: skip en fin de ligne protège cette seule ligne. Ce sont les commentaires de Black lui-même, ils continuent donc de fonctionner quand la CI de votre projet lance Black.

## Questions

**Mon code est-il envoyé ou stocké ?**

Il est envoyé au serveur, formaté en mémoire et renvoyé dans la même réponse. Rien n'est écrit sur disque, mis en cache ou journalisé, et le relevé d'utilisation ne garde que des comptes - taille, options, nombre de lignes modifiées - jamais le code.

**Le formatage change-t-il ce que fait mon code ?**

Non. Black change la mise en forme, pas le comportement, mais il fait plus que déplacer des espaces. Il supprime les parenthèses superflues (x = (1) devient x = 1), met en minuscules les préfixes et exposants des nombres (0XABCDEF devient 0xABCDEF, 1E5 devient 1e5), ajoute une virgule finale quand il répartit un appel sur plusieurs lignes, réduit les suites de lignes vides et retire les espaces à l'intérieur d'une docstring (""" Doc. """ devient """Doc."""). Ce dernier changement modifie le texte de __doc__, ce qui ne compte que si votre code lit ses propres docstrings.

**Pourquoi mon fichier n'a-t-il pas été reformaté du tout ?**

Parce qu'il était déjà formaté à la longueur de ligne choisie. L'outil indique "déjà formaté" plutôt que de renvoyer silencieusement une copie.

**Trie-t-il mes imports ?**

Non. Le tri des imports est le travail d'isort, pas de Black, et les deux divergent assez souvent pour que cela vous surprenne si c'était fait ici.

**Peut-il formater un fichier avec une erreur de syntaxe ?**

Aucun formateur ne le peut - un fichier non analysable n'a pas de structure à réécrire. Vous obtenez la ligne, la colonne et le code environnant pour pouvoir le corriger et réessayer.

**Respecte-t-il la PEP 8 ?**

Black est compatible avec la PEP 8 à une exception connue près : sa longueur de ligne par défaut est 88 plutôt que 79. Choisissez 79 dans le sélecteur de longueur de ligne si vous avez besoin du chiffre le plus strict.

**Quelle taille de fichier puis-je formater ?**

Jusqu'à 400 000 caractères par passage. Le formatage s'arrête au bout de 10 secondes, ce que seuls des fichiers très gros ou très répétitifs atteignent, et chaque adresse IP peut lancer 30 formatages toutes les 10 minutes.

**Comment obtenir la même mise en forme dans mon éditeur, avec pre-commit ou en CI ?**

Cette page utilise Black, et sa version s'affiche dans l'en-tête de la page sur les grands écrans. Black lit la configuration du projet dans pyproject.toml, section [tool.black], avec les noms longs des options : line-length = 88 pour le réglage "Longueur de ligne" choisi, skip-string-normalization = true si vous avez coché "Conserver mes guillemets", skip-magic-trailing-comma = true pour "Ignorer la virgule finale magique" et target-version = ["py311"] pour une valeur fixe dans "Cible". Les extensions d'éditeur et le hook pre-commit lisent le même fichier. Lancez black . pour formater et black --check --diff . en CI : rien n'est modifié et la commande se termine avec le code 1 si un fichier serait reformaté. Épinglez la même version de Black que cette page, car la première version de chaque année civile peut modifier le style stable.

**Le résultat est-il identique à celui du formateur de Ruff (ruff format) ?**

Presque toujours, mais pas octet pour octet. Le formateur de Ruff est conçu pour remplacer Black directement, et sa documentation indique que sur de grands projets déjà formatés avec Black, comme Django et Zulip, plus de 99,9 % des lignes ressortent identiques. Il diverge davantage sur du code jamais passé par Black, surtout pour les commentaires en fin de ligne, et sa documentation liste ses écarts volontaires. Sa longueur de ligne par défaut est aussi 88, réglable avec line-length dans [tool.ruff] ; quote-style = "preserve" dans [tool.ruff.format] correspond à "Conserver mes guillemets" et skip-magic-trailing-comma = true à "Ignorer la virgule finale magique". Si votre CI lance ruff format --check, testez le fichier avec Ruff, pas avec cette page.

## Plus dans Outils pour développeurs

- [Visualiseur HTML](https://discuvr.org/html-viewer/?hl=fr)
- [Calculateur de sous-réseau IP](https://discuvr.org/ip-subnet-calculator/?hl=fr)
- [Encoder / Décoder](https://discuvr.org/encode-decode/?hl=fr)
- [Convertisseur d'horodatage Unix](https://discuvr.org/timestamp-converter/?hl=fr)

## Souvent utilisé avec

- [Comparateur de textes](https://discuvr.org/text-diff/?hl=fr)
- [Convertisseur de casse et outils de lignes](https://discuvr.org/case-converter/?hl=fr)
- [Study Buddy](https://discuvr.org/study-buddy/?hl=fr)

---

Part of Discuvr (https://discuvr.org/): Discuvr is a collection of free, focused tools for day-to-day professional work - office and data utilities, legal and compliance helpers, privacy and security checks, and developer formatters. Every tool has its own page, and most can also be called from ChatGPT or Claude over MCP.
