Formateur Python
Reformatez Python comme le ferait Black - et voyez exactement combien de lignes ont été modifiées.
Votre code
0 caractèreFormaté
Reformatez Python comme le ferait Black - et voyez exactement combien de lignes ont été modifiées.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.