Python Biçimlendirici
Python'u Black'in yapacağı şekilde yeniden biçimlendirin - ve tam olarak kaç satırın değiştiğini görün.
Kodunuz
0 karakterBiçimlendirildi
Python'u Black'in yapacağı şekilde yeniden biçimlendirin - ve tam olarak kaç satırın değiştiğini görün.
Bu araç, çoğu Python projesinin zaten üzerinde anlaştığı biçimlendirici olan Black'i, yapıştırdığınız şey üzerinde, seçtiğiniz satır uzunluğu ve tırnak işareti işleme ile çalıştırır. Dosya ayrıştırılamıyorsa hangi satırda olduğunu söyler, zaten biçimlendirilmişse bir şey yapmış gibi davranmak yerine bunu da söyler.
Python'u biçimlendirmek onu çalıştırmayı gerektirmez. Kod bir sözdizimi ağacına ayrıştırılır ve tamamen bellekte, bu ağaçtan yeniden yazılır - asla bir dosyaya yazılmaz, asla içe aktarılmaz ve asla çalıştırılmaz. Yapıştırdığınızı çalıştıran bir biçimlendirici, metin kutusu olan bir uzak kabuk olurdu.
Black, AST'yi koruyan bir dönüşümdür: çıkan kod, giren kodla aynı programdır. Bu özellik, bir biçimlendiriciye güvenilebilmesinin tüm nedenidir ve bu aracın hiçbir yerinde bir dil modelinin yer almamasının nedenidir. Kodu düzenlemesi istenen bir model, bunu yaparken ara sıra bir satırı yeniden yazar ve çalışan koddaki sessiz bir değişiklik, bir biçimlendiricinin göze alamayacağı tek hatadır.
CI'nin sorduğu aynı soru: bu dosya değişir miydi? Kontrol modu orijinal kodunuzu değiştirmeden döndürür ve Black'in onu yeniden biçimlendirip biçimlendirmeyeceğini, kaç satır olacağını bildirir. Yerel olarak yeniden oluşturamadığınız bir dosyada bir ardışık düzenin neden başarısız olduğunu öğrenmenin hızlı yoludur.
Son öğeden sonraki virgül, Black'e bir çağrıyı veya koleksiyonu satır başına bir öğe olacak şekilde tutmasını söyler: result = compute(alpha, beta,) dört satır olarak döner, alpha, ve beta, ayrı satırlarda yer alır. Sihirli son virgülü yoksay seçeneğini işaretlerseniz aynı girdi, satır uzunluğuna sığdığında result = compute(alpha, beta) olur. Matris gibi elle hizalanmış bir bloğu korumak için üstündeki satıra # fmt: off, altına # fmt: on yazın; Black aradaki her şeyi yazdığınız gibi bırakır. Satır sonundaki # fmt: skip yalnızca o satırı korur. Bunlar Black'in kendi yorumlarıdır, bu yüzden projenizin CI'ı Black çalıştırdığında da geçerlidir.
Sunucuya gönderilir, bellekte biçimlendirilir ve aynı yanıtta geri döndürülür. Hiçbir şey diske yazılmaz, önbelleğe alınmaz veya günlüğe kaydedilmez ve kullanım kaydı sadece sayıları tutar - boyut, seçenekler, kaç satır değişti - asla kodu değil.
Hayır. Black davranışı değil düzeni değiştirir, ama boşluk kaydırmaktan fazlasını yapar. Gereksiz parantezleri kaldırır (x = (1), x = 1 olur), sayı öneklerini ve üslerini küçük harfe çevirir (0XABCDEF, 0xABCDEF olur; 1E5, 1e5 olur), bir çağrıyı birkaç satıra böldüğünde sona virgül ekler, art arda gelen boş satırları azaltır ve docstring içindeki boşlukları kırpar (""" Doc. """, """Doc.""" olur). Bu son değişiklik __doc__ metnini değiştirir; bu yalnızca kodunuz kendi docstring'lerini okuyorsa önemlidir.
Çünkü seçtiğiniz satır uzunluğunda zaten biçimlendirilmişti. Araç, sessizce bir kopya döndürmek yerine "zaten biçimlendirilmiş" der.
Hayır. İçe aktarma sıralaması Black'in değil isort'un işidir ve ikisi burada yapılsa sizi şaşırtacak kadar sık anlaşmazlığa düşer.
Hiçbir biçimlendirici yapamaz - ayrıştırılamayan bir dosyanın yeniden yazılacak bir yapısı yoktur. Düzeltip tekrar deneyebilmeniz için satırı, sütunu ve çevresindeki kodu alırsınız.
Black, bilinen bir sapma ile PEP 8 uyumludur: varsayılan satır uzunluğu 79 değil 88'dir. Daha sıkı rakama gerek duyuyorsanız satır uzunluğu seçicisinde 79'u seçin.
Çalıştırma başına 400.000 karaktere kadar. Biçimlendirme 10 saniye sonra durdurulur; buna yalnızca çok büyük veya çok tekrarlı dosyalar ulaşır. Her IP adresi 10 dakikada 30 biçimlendirme yapabilir.
Bu sayfa Black kullanır ve sürümü geniş ekranlarda sayfa üst bilgisinde gösterilir. Black proje ayarlarını pyproject.toml dosyasındaki [tool.black] bölümünden, seçeneklerin uzun adlarıyla okur: seçtiğiniz "Satır uzunluğu" için line-length = 88, "Tırnak işaretlerimi koru" işaretliyse skip-string-normalization = true, "Sihirli son virgülü yoksay" için skip-magic-trailing-comma = true ve sabit bir "Hedef" değeri için target-version = ["py311"]. Editör eklentileri ve pre-commit kancası aynı dosyayı okur. Biçimlendirmek için black . ve CI'da black --check --diff . çalıştırın: hiçbir şeyi değiştirmez ve bir dosya yeniden biçimlendirilecekse 1 koduyla çıkar. Bu sayfayla aynı Black sürümünü sabitleyin, çünkü her takvim yılının ilk sürümü kararlı stili değiştirebilir.
Neredeyse her zaman, ama bayt bayt değil. Ruff biçimlendiricisi Black'in doğrudan yerine geçecek şekilde tasarlanmıştır ve Ruff belgelerine göre Django ve Zulip gibi Black ile biçimlendirilmiş büyük projelerde satırların %99,9'undan fazlası aynı çıkar. Black'ten hiç geçmemiş kodda, özellikle satır sonu yorumlarında daha çok ayrışır ve belgeleri bilinçli farklarını listeler. Varsayılan satır uzunluğu da 88'dir ve [tool.ruff] altında line-length ile ayarlanır; [tool.ruff.format] altındaki quote-style = "preserve" "Tırnak işaretlerimi koru" seçeneğine, skip-magic-trailing-comma = true ise "Sihirli son virgülü yoksay" seçeneğine karşılık gelir. CI'nız ruff format --check çalıştırıyorsa dosyayı bu sayfayla değil Ruff ile test edin.