Fungsi alat ini
Formatter Python menulis ulang kode Python dengan gaya Black yang banyak dipakai: indentasi konsisten, spasi di sekitar operator, kutip ganda, dua baris kosong di antara definisi tingkat atas, dan baris panjang yang dipecah di tempat yang masuk akal.
Di balik layar, alat ini menjalankan formatter dari Ruff, linter dan formatter Python cepat yang ditulis dengan Rust, yang dikompilasi ke WebAssembly. Hasil Ruff hampir sama baris demi baris dengan Black, jadi kode yang diformat di sini tidak akan diformat ulang oleh pre-commit hook proyek Anda.
Cara menggunakannya
- Tempel kode Python, atau buka file
.py. - Kode yang sudah diformat muncul di sebelah kanan saat Anda mengetik.
- Sesuaikan opsinya jika proyek Anda memakai gaya yang berbeda:
- Indentasi: 4 spasi adalah PEP 8 sekaligus bawaan; 2 spasi dan tab juga tersedia.
- Lebar baris: 88 adalah bawaan Black, 79 adalah batas PEP 8, dan 100 atau 120 cocok untuk layar yang lebih lebar.
- Tanda kutip: ganda, tunggal, atau pertahankan kutip yang sudah dipakai tiap string.
- Hormati koma di akhir: biarkan koleksi yang diakhiri koma tetap terurai.
- Salin atau unduh hasilnya.
Jika kode tidak bisa diurai, pesan error menunjukkan tempat parser berhenti, misalnya Expected `,`, found `=` di baris 4, dan Anda bisa langsung melompat ke baris tersebut.
Contoh
Contohnya adalah modul kecil yang ditulis asal-asalan: import dalam satu baris tanpa spasi, dataclass dengan spasi sebelum titik dua, method yang diindentasi dua spasi, dan pernyataan if satu baris. Setelah diformat, setiap blok memakai indentasi empat spasi, isi if pindah ke barisnya sendiri, operator mendapat spasi, kutip tunggal menjadi kutip ganda, dan baris kosong ditambahkan di antara class dan fungsi. List yang diakhiri koma diuraikan dengan satu dictionary per baris.
Yang tidak dilakukan formatter
Pemformatan hanya mengubah tata letak. Formatter tidak mengurutkan import, menghapus variabel yang tidak dipakai, atau mengganti nama apa pun; itu tugas linter (ruff check --fix menanganinya). Komentar dan docstring dipertahankan, dan formatter menolak mengubah kode yang tidak bisa diurainya alih-alih menebak.
Tips
- Gunakan lebar baris yang sama dengan
pyproject.tomlproyek Anda agar hasilnya sesuai dengan CI. - Memformat potongan kode sebelum mempostingnya di pertanyaan atau review membuatnya jauh lebih mudah dibaca.
- Jika kode berasal dari notebook atau chat dan mencampur tab dan spasi, formatter menormalkannya dalam satu langkah.
FAQ
› Apakah hasilnya sama dengan Black?
Formatter Ruff dirancang sebagai pengganti langsung (drop-in replacement) Black dan hasilnya sama dengan Black pada lebih dari 99,9% baris di proyek-proyek besar dunia nyata. Pengaturan bawaan di sini (indentasi 4 spasi, 88 kolom, kutip ganda) adalah pengaturan bawaan Black.
› Apa itu "magic trailing comma"?
Jika sebuah list, pemanggilan, atau definisi diakhiri koma, Black dan Ruff tetap menguraikannya dengan satu item per baris meskipun muat dalam satu baris. Matikan sakelarnya untuk meringkas koleksi seperti itu setiap kali muat.
› Versi Python mana saja yang didukung?
Parser memahami sintaks Python 3 modern, termasuk pernyataan match, daftar parameter tipe, dan f-string dengan kutip bersarang. Kode Python 2 seperti `print "x"` dianggap kesalahan sintaks.
› Apakah kode saya diunggah?
Tidak. Modul WebAssembly Ruff diunduh sekali dan pemformatan berjalan di browser Anda.