Formatter Python
Format ulang Python seperti yang dilakukan Black - dan lihat dengan pasti berapa baris yang diubah.
Kode Anda
0 karakterDiformat
Format ulang Python seperti yang dilakukan Black - dan lihat dengan pasti berapa baris yang diubah.
Ini menjalankan Black - formatter yang sudah disetujui oleh sebagian besar proyek Python - atas apa pun yang Anda tempel, dengan panjang baris dan penanganan tanda kutip yang Anda pilih. Jika file tidak dapat diurai, ia memberi tahu di baris mana, dan jika sudah terformat, ia juga mengatakannya, bukannya berpura-pura telah melakukan sesuatu.
Memformat Python tidak memerlukan menjalankannya. Kode diurai menjadi pohon sintaks dan ditulis ulang dari pohon itu, seluruhnya dalam memori - kode tidak pernah ditulis ke file, tidak pernah diimpor dan tidak pernah dijalankan. Formatter yang menjalankan apa yang Anda tempel akan menjadi shell jarak jauh dengan kotak teks.
Black adalah transformasi yang mempertahankan AST: kode yang keluar adalah program yang sama dengan kode yang masuk. Properti itulah satu-satunya alasan mengapa sebuah formatter bisa dipercaya, dan itulah mengapa tidak ada model bahasa yang dilibatkan di bagian mana pun dari alat ini. Model yang diminta merapikan kode akan sesekali menulis ulang sebuah baris saat melakukannya, dan perubahan diam-diam pada kode yang berfungsi adalah satu-satunya kegagalan yang tidak bisa ditanggung oleh sebuah formatter.
Pertanyaan yang sama dengan yang diajukan CI: apakah file ini akan berubah? Mode periksa mengembalikan kode asli Anda tanpa perubahan dan melaporkan apakah Black akan memformatnya ulang, dan sebanyak berapa baris. Ini cara cepat untuk mengetahui mengapa sebuah pipeline gagal pada file yang tidak dapat Anda reproduksi secara lokal.
Koma setelah item terakhir memberi tahu Black untuk mempertahankan pemanggilan atau koleksi satu item per baris: result = compute(alpha, beta,) kembali sebagai empat baris, dengan alpha, dan beta, masing-masing di barisnya sendiri. Centang Abaikan koma ajaib di akhir dan masukan yang sama menjadi result = compute(alpha, beta) selama muat dalam panjang baris. Untuk melindungi blok yang disejajarkan manual, seperti matriks, taruh # fmt: off di baris atasnya dan # fmt: on di bawahnya, maka Black membiarkan semua di antaranya seperti yang Anda tulis; # fmt: skip di akhir baris hanya melindungi baris itu. Ini komentar milik Black sendiri, jadi tetap berlaku saat CI proyek Anda menjalankan Black.
Kode dikirim ke server, diformat dalam memori dan dikembalikan dalam respons yang sama. Tidak ada yang ditulis ke disk, di-cache atau dicatat, dan catatan penggunaan hanya menyimpan jumlah - ukuran, opsi, berapa banyak baris yang berubah - tidak pernah kodenya.
Tidak. Black mengubah tata letak, bukan perilaku, tetapi lebih dari sekadar menggeser spasi. Ia membuang tanda kurung yang berlebihan (x = (1) menjadi x = 1), mengecilkan huruf awalan dan eksponen angka (0XABCDEF menjadi 0xABCDEF, 1E5 menjadi 1e5), menambahkan koma di akhir saat memecah pemanggilan ke beberapa baris, memangkas deretan baris kosong, dan membuang spasi di dalam docstring (""" Doc. """ menjadi """Doc."""). Perubahan terakhir ini mengubah teks __doc__, yang hanya penting jika kode Anda membaca docstring-nya sendiri.
Karena file itu sudah terformat pada panjang baris yang Anda pilih. Alat ini mengatakan "sudah terformat" alih-alih diam-diam mengembalikan salinan.
Tidak. Mengurutkan impor adalah tugas isort, bukan Black, dan keduanya cukup sering tidak sepakat sehingga melakukannya di sini akan mengejutkan Anda.
Tidak ada formatter yang bisa - file yang tidak dapat diurai tidak memiliki struktur untuk ditulis ulang. Anda mendapatkan baris, kolom dan kode di sekitarnya agar dapat memperbaikinya dan mencoba lagi.
Black kompatibel dengan PEP 8 dengan satu penyimpangan yang terkenal: panjang baris default-nya adalah 88 bukan 79. Pilih 79 di pemilih panjang baris jika Anda memerlukan angka yang lebih ketat.
Hingga 400.000 karakter per proses. Pemformatan dihentikan setelah 10 detik, yang hanya dicapai file sangat besar atau sangat berulang, dan setiap alamat IP dapat memformat 30 kali setiap 10 menit.
Halaman ini menjalankan Black, dan versinya tampil di header halaman pada layar lebar. Black membaca pengaturan proyek dari pyproject.toml di bagian [tool.black], dengan nama panjang opsinya: line-length = 88 untuk "Panjang baris" yang Anda pilih, skip-string-normalization = true jika Anda mencentang "Pertahankan tanda kutip saya", skip-magic-trailing-comma = true untuk "Abaikan koma ajaib di akhir", dan target-version = ["py311"] untuk nilai tetap di "Target". Plugin editor dan hook pre-commit membaca file yang sama. Jalankan black . untuk memformat dan black --check --diff . di CI: tidak ada yang diubah dan perintah keluar dengan kode 1 jika ada file yang akan diformat ulang. Kunci versi Black yang sama dengan halaman ini, karena rilis pertama setiap tahun kalender boleh mengubah gaya stabil.
Hampir selalu, tetapi tidak sama persis per byte. Formatter Ruff dirancang sebagai pengganti langsung Black, dan dokumentasi Ruff menyebut bahwa pada proyek besar yang sudah diformat dengan Black, seperti Django dan Zulip, lebih dari 99,9% baris keluar identik. Perbedaannya lebih banyak pada kode yang belum pernah melewati Black, terutama komentar di akhir baris, dan dokumentasinya mencantumkan penyimpangan yang disengaja. Panjang baris bawaannya juga 88, diatur dengan line-length di [tool.ruff]; quote-style = "preserve" di [tool.ruff.format] setara dengan "Pertahankan tanda kutip saya" dan skip-magic-trailing-comma = true setara dengan "Abaikan koma ajaib di akhir". Jika CI Anda menjalankan ruff format --check, uji file dengan Ruff, bukan dengan halaman ini.