Neu geschrieben wird nur Weißraum: die Einrückung wird neu geordnet und lange Zeilen können umgebrochen werden, während Zeichenketten, Kommentare und Operatoren Byte für Byte übernommen werden. Ein Layout-Formatierer, kein Linter — Syntax wird nicht geprüft und nicht repariert.
Läuft lokal in deinem BrowserPython-Ausschnitt einfügen und das Werkzeug liefert dasselbe Programm mit neu geordneter Einrückung, einer Regel für Leerzeilen und optionalem Zeilenumbruch zurück. Neu geschrieben wird nur der Weißraum zwischen Tokens: Zeichenketten, Kommentare und die geschweiften Klammern von f-Strings werden Byte für Byte übernommen, das Ergebnis wird also zum selben Syntaxbaum geparst wie die Eingabe.
Der Formatierer läuft vollständig in diesem Browser-Tab, nichts wird hochgeladen. Es ist ein Layout-Formatierer, kein Linter: Python wird nicht geprüft, nicht kompiliert und nicht repariert, und es wird nie ein Fehler gemeldet — ein kaputter Ausschnitt kommt formatiert zurück, nicht korrigiert.
Neu geschrieben wird nur der Weißraum zwischen Tokens: die Einrückung am Zeilenanfang wird auf die gewählte Einheit gebracht, Leerzeichen am Zeilenende und überzählige Leerzeilen verschwinden, lange Zeilen können umgebrochen werden. Alles andere wird Byte für Byte kopiert — Zeichenketten in einfachen und doppelten Anführungszeichen, Raw-, Bytes- und f-Strings (einschließlich geschweifter Klammern mit verschachtelten Anführungszeichen), dreifach quotierte Strings und Docstrings samt ihrer inneren Einrückung, Kommentare und Operatoren wie **, //, :=, -> sowie die * und ** in Aufrufen und beim Entpacken.
Eine schnelle Prüfung jedes Ergebnisses: die Ausgabe enthält dieselben Tokens in derselben Reihenfolge wie die Eingabe, nur anders gesetzt. Wenn der Code im Editor zusätzlich durch Black, Ruff oder autopep8 läuft, ersetzt diese Seite das nicht — sie ist zum Lesen eines Ausschnitts da, nicht als Build-Schritt.
Jede tiefere Einrückungsstufe der Eingabe wird zu einer Einheit der gewählten Breite; Tabulatoren, 2, 3, 4 und 8 Leerzeichen ergeben also dieselbe Blockstruktur, und eine Datei mit gemischten Stilen wird auf die gewählte Einheit normalisiert. Zeilen, die eine unfertige Anweisung fortsetzen — in Klammern oder nach einem Backslash — behalten ihren Abstand zu der Anweisung, zu der sie gehören.
Die Leerzeilen-Option begrenzt Folgen leerer Zeilen: ganz entfernen, höchstens eine oder zwei behalten (die Voreinstellung behält zwei, der übliche Abstand um Definitionen auf oberster Ebene) oder alle behalten. Der Umbruch arbeitet gierig und bricht nur an Weißraum außerhalb von Zeichenketten und Kommentaren, ein Token wird also nie geteilt; lässt sich eine lange Zeichenkette oder ein langer Name nicht brechen, bleibt die Zeile lang statt abgeschnitten zu werden.
Er ist kein Linter, kein Style-Fixer und kein Interpreter. Nichts wird ausgeführt, keine Namen werden umbenannt, Importe werden nicht sortiert, Anführungszeichen nicht umgestellt, und ein fehlender Doppelpunkt oder eine offene Klammer wird nicht gemeldet. Vom Autor getrennte Zeilen bleiben getrennt, abgesehen von ihrer Einrückung.
Da das Programm nie geparst wird, kann die Seite nicht sagen, dass die Eingabe ungültig ist: gemischte Tabulatoren und Leerzeichen werden zum Beispiel normalisiert statt gemeldet. Für eine Gültigkeitsprüfung das Ergebnis durch python -m py_compile oder die Prüfung des Editors schicken.