DevToolPal
NL

Python-formatter

Formatteer Python-code in Black-stijl met de Ruff-formatter, gecompileerd naar WebAssembly.

Draait lokaal, wordt nooit geüpload

Opties

Inspringing
Aanhalingstekens

Invoer

0 tekens · 0 B

Uitvoer

0 tekens · 0 B

Wat deze tool doet

De Python-formatter herschrijft Python-code in de veelgebruikte Black-stijl: consequente inspringing, spaties rond operatoren, dubbele aanhalingstekens, twee lege regels tussen definities op topniveau en lange regels die op logische plekken worden afgebroken.

Onder de motorkap draait de formatter van Ruff, de snelle Python-linter en -formatter geschreven in Rust, gecompileerd naar WebAssembly. De uitvoer van Ruff komt vrijwel regel voor regel overeen met Black, dus code die je hier formatteert wordt niet opnieuw aangepast door de pre-commit hook van je project.

Zo gebruik je het

  1. Plak Python-code of open een .py-bestand.
  2. De geformatteerde code verschijnt rechts terwijl je typt.
  3. Pas de opties aan als je project een andere stijl gebruikt:
    • Inspringing: 4 spaties is PEP 8 en de standaard; 2 spaties en tabs zijn beschikbaar.
    • Regelbreedte: 88 is de standaard van Black, 79 de limiet van PEP 8, en 100 of 120 passen bij bredere schermen.
    • Aanhalingstekens: dubbel, enkel, of behoud de aanhalingstekens die elke string al gebruikt.
    • Afsluitende komma’s respecteren: houd collecties die op een komma eindigen uitgeklapt.
  4. Kopieer of download het resultaat.

Als de code niet kan worden geparsed, toont de foutmelding waar de parser stopte, zoals Expected `,`, found `=` op regel 4, en kun je naar die regel springen.

Voorbeeld

Het voorbeeld is een kleine, slordig geschreven module: imports op één regel zonder spaties, een dataclass met een spatie voor de dubbele punt, een methode die met twee spaties is ingesprongen en een if-statement op één regel. Na het formatteren gebruikt elk blok een inspringing van vier spaties, staat de body van de if op een eigen regel, krijgen operatoren spaties, worden enkele aanhalingstekens dubbele en komen er lege regels tussen de klasse en de functies. De lijst die op een afsluitende komma eindigde wordt uitgeklapt met één dictionary per regel.

Wat de formatter niet doet

Formatteren verandert alleen de layout. Hij sorteert geen imports, verwijdert geen ongebruikte variabelen en hernoemt niets; dat is werk voor een linter (ruff check --fix regelt dat). Commentaar en docstrings blijven behouden, en code die de formatter niet kan parsen laat hij liever ongemoeid dan dat hij gaat gokken.

Tips

  • Gebruik dezelfde regelbreedte als in de pyproject.toml van je project, zodat het resultaat overeenkomt met je CI.
  • Een fragment formatteren voordat je het in een vraag of review plaatst, maakt het veel leesbaarder.
  • Komt de code uit een notebook of een chat en staan er tabs en spaties door elkaar, dan normaliseert de formatter dat in één stap.

Veelgestelde vragen

› Is de uitvoer hetzelfde als die van Black?

De formatter van Ruff is ontworpen als drop-in vervanging voor Black en komt in grote, echte projecten op meer dan 99,9% van de regels overeen met de uitvoer van Black. De standaardinstellingen hier (inspringing van 4 spaties, 88 kolommen, dubbele aanhalingstekens) zijn die van Black.

› Wat is de ‘magic trailing comma’?

Als een lijst, aanroep of definitie eindigt op een afsluitende komma, houden Black en Ruff die uitgeklapt met één item per regel, zelfs als hij op één regel zou passen. Zet de schakelaar uit om zulke collecties in te klappen zodra ze passen.

› Welke Python-versies worden ondersteund?

De parser begrijpt moderne Python 3-syntaxis, inclusief match-statements, type parameter lists en f-strings met geneste aanhalingstekens. Python 2-code zoals `print "x"` is een syntaxfout.

› Wordt mijn code geüpload?

Nee. De Ruff-WebAssemblymodule wordt één keer gedownload en het formatteren gebeurt in je browser.