Code-Formatierungsfunktion wird experimentell in uv eingeführt
(pydevtools.com)- In der neuen uv-Version wird experimentell eine Code-Formatierungsfunktion bereitgestellt
- Der Befehl
uv formatverwendet intern den Formatter von Ruff, um Python-Code konsistent zu formatieren - Damit ist einfaches Aufräumen von Code nur mit uv möglich, ohne ein separates Tool
- Nutzer können über zusätzliche Argumente das Formatierungsverhalten im Detail anpassen
- Da es sich noch um eine experimentelle Funktion handelt, sind Änderungen bei Befehlsweise, Fehlerbehandlung usw. möglich
Überblick
Das neueste Release von uv (0.8.13) führt die experimentelle Befehlsfunktion uv format ein, auf die Python-Entwickler lange gewartet haben. Mit dieser Funktion lässt sich die Code-Stil-Formatierung allein mit uv im Projekt durchführen, ohne zusätzliche Formatierungswerkzeuge separat verwalten zu müssen.
Was ist uv format?
- Der Befehl
uv formatbietet Python-Code-Formatierung über die uv-Oberfläche - Intern wird der Ruff-Formatter aufgerufen, um den Code automatisch und konsistent zu formatieren
Hinweise für Entwickler
Charlie Marsh (uv-Entwickler) erklärte dazu auf Hacker News:
Ruff und uv werden nicht zusammengeführt und bleiben weiterhin getrennte Tools
Ziel ist einfach, die Nutzungserfahrung zu verbessern, sodass Anwender den Formatter verwenden können, ohne ihn als separates Tool wahrzunehmen
Ähnlich wie die Beziehung zwischencargo fmtundrustfmtim Rust-Ökosystem
Verwendung
- Es muss uv in Version 0.8.13 oder höher verwendet werden
- Wenn der Befehl
uv formatim Projekt-Root ausgeführt wird, entspricht die Wirkung der Ausführung von ruff format - Die Ausführung folgt der Befehlsoberfläche von uv
Übergabe zusätzlicher Argumente
- In der Form
uv format -- [zusätzliche Argumente]lassen sich Detailoptionen zur Übergabe an Ruff festlegen - So können die Benutzerfreundlichkeit von uv und die feingranularen Einstellungen von Ruff gleichzeitig genutzt werden
Hinweis zur experimentellen Phase
- Die Funktion befindet sich derzeit in einer experimentellen Phase, daher können sich Befehlsweise oder die Integration in die Projektstruktur künftig ändern
- Auch Fehlerbehandlung und Ausgabeformat sollen fortlaufend verbessert werden
- Die Funktion soll unter Einbeziehung von Nutzerfeedback weiterentwickelt werden
Abschluss
- Wer in Python-Projekten einfache und konsistente Code-Formatierung benötigt, kann
uv formataktiv ausprobieren - Da es sich um eine experimentelle Einführung handelt, kann direktes Ausprobieren mit anschließendem Feedback zur Weiterentwicklung von uv beitragen
1 Kommentare
Hacker-News-Kommentare
ruffmittyzusammengeführt würde;uvsollte sich auf Paket- oder Projektmanagement konzentrieren und sich nicht auch noch um die Bearbeitung des Code-Stils kümmern. Meiner Ansicht nach sollteuvCode-Dateien nur im Fall von Abhängigkeits-Updates (PEP 723) ändern.ruffunduvnicht zusammengeführt werden und weiterhin getrennte Tools bleiben. Ziel ist vielmehr, Nutzern, die sich nicht separat um einen Formatter kümmern möchten, ein einfacheres Erlebnis zu bieten. Das ist ähnlich wie bei Rusts Cargo, wocargo fmtinternrustfmtausführt.cargo fmtin Rusts cargo vorhanden ist.uvzu einem vollständigen Python-Paketmanager zu machen, wobei die einzelnen Werkzeuge bei Bedarf auch separat nutzbar bleiben.uvist also so etwas wie Cargo für Python, und wer nur einen schnellen Typechecker braucht, sollte nurtyverwenden können, während jemand, der nur Formatter/Linter braucht, nurruffwählen kann. In diesem Sinne ergibt eine Zusammenlegung vonruffundtynicht besonders viel Sinn.tyinuvintegriert würde. Da alles von astral.sh kommt, könnte das Teil der Vision sein, abertyscheint dafür noch nicht bereit zu sein.uv linteinzuführen, die interntyausführt. Idealerweise könnte man ein Python-Projekt mit einem einzigen Standardbefehl oder einer Reihe von Kommandos vorbereiten – formatieren, linten, testen, veröffentlichen. Vielleicht ist genau das die Vision hier.uv run --no-projectunduv run --activeusw.). Statt ständig neue Funktionen hinzuzufügen, würde ich mir wünschen, dass man sich stärker auf die Verbesserung bestehender Tools und der Dokumentation konzentriert.uv syncist theoretisch sehr nützlich, weil dabei nur erneut reproduzierbare Paketsätze gebaut werden, aber komplexe Pakete wie torch-tensorrt oder flash-attn können je nach Umgebung zwangsläufig variieren. Die Python-Community neigt oft dazu, Probleme nach dem Muster „bei mir funktioniert es“ zu individualisieren, aber die Kosten dafür, Software verteilbar, sicher, wiederholbar und zuverlässig zu machen, verschwinden nie. Am Ende zahlt jemand diesen Preis später unter stärker eingeschränkten Bedingungen. Es ist wirklich schwer, all diese unterschiedlichen Nutzer- und Betriebsanforderungen gleichzeitig zu erfüllen.make-Befehl hat zu viele Targets.“uvx ruff formatein Wort länger ist. Verwirrender könnte eher sein, dass unklar wird, welcher Formatter tatsächlich ausgeführt wird, ob ruff automatisch installiert wird oder ob wie bisher Tools heruntergeladen und gecacht werden.pyprojectkonfigurieren könnte.uv formatnicht.uv <Funktion>hilft dem Team enorm. Es wäre schön, wenn auch eine Integration mit anderen Formattern möglich wäre, und wenn sogar SQL-/dbt-Modell-Formatting unterstützt würde, hätte ich kaum noch Wünsche offen. Ich werde es erst einmal ausprobieren und sehen, welches Potenzial darin steckt.just formatPython/SQL/Bash/TypeScript in einem Rutsch formatieren.tybereits im selben Repository wie ruff liegt, scheint eine Integration auch gar nicht so fern zu sein.uv formatist im Grunde nur eine Abkürzung füruv run --with ruff ruff.uv fmtnennen und etwas wieuv vetebenfalls in die Roadmap aufnehmen.uv formatist im Grunde eher ein Frontend fürruff format; es kommt also kein neuer Formatter hinzu.ruff formatbequem aufzurufen.