Kod biçimlendirme özelliği deneysel olarak uv'ye eklendi
(pydevtools.com)- Yeni uv sürümünde kod biçimlendirme özelliği deneysel olarak sunuluyor
uv formatkomutu, Python kodunu tutarlı bir stille biçimlendirmek için dahili olarak Ruff biçimlendiricisini kullanıyor- Artık ayrı bir araca ihtiyaç duymadan yalnızca uv ile kod düzenleme işlemleri kolayca yapılabiliyor
- Kullanıcılar ek argümanlarla biçimlendirme davranışını ayrıntılı biçimde ayarlayabiliyor
- Henüz deneysel bir özellik olduğu için komut kullanımı, hata işleme gibi alanlarda değişiklik olabilir
Genel Bakış
uv'nin en son sürümü olan 0.8.13, Python geliştiricilerinin uzun süredir beklediği deneysel uv format komutunu sunuyor. Bu özellik sayesinde projede ayrı bir biçimlendirme aracını ayrıca yönetmeden, yalnızca uv aracıyla kod stilini düzenlemek mümkün oluyor
uv format nedir?
uv formatkomutu, uv arayüzü üzerinden Python kod biçimlendirmesi sağlıyor- Arka planda Ruff biçimlendiricisini çağırarak kodu otomatik ve tutarlı biçimde düzenliyor
Geliştiriciler için notlar
uv geliştiricisi Charlie Marsh, Hacker News'te bunu şöyle açıklıyor
Ruff ile uv birleşmiyor; ikisi hâlâ ayrı araçlar
Amaç yalnızca, kullanıcının biçimlendiriciyi ayrı bir araç olarak düşünmeden kullanabilmesini sağlayan deneyimi iyileştirmek
Bu ilişki, Rust ekosistemindeki cargo fmt ile rustfmt ilişkisine benziyor
Kullanım
- uv 0.8.13 veya üzeri bir sürüm kullanılmalı
- Proje kök dizininde
uv formatkomutunu çalıştırmak, ruff format çalıştırmaya eşdeğer etki yaratıyor - Çalıştırma biçimi uv'nin komut arayüzünü takip ediyor
Ek argüman iletme
uv format -- [ek argümanlar]biçimiyle Ruff'a iletilecek ayrıntılı seçenekler ayarlanabiliyor- Böylece aynı anda hem uv'nin kolaylığından hem de Ruff'ın ayrıntılı ayarlarından yararlanılabiliyor
Deneysel aşama duyurusu
- Özellik şu anda deneysel aşamada ve ileride komut kullanımı ya da proje yapısıyla bütünleşme biçimi değişebilir
- Hata işleme, çıktı biçimi gibi alanlar da sürekli geliştirilecek
- Özellik, kullanıcı geri bildirimleri yansıtılarak evrilecek
Kapanış
- Python projelerinde kolay ve tutarlı kod biçimlendirmesi gerekiyorsa
uv formataktif olarak denenebilir - Deneysel bir ekleme olduğu için, doğrudan kullanıp geri bildirim vermek uv'nin gelecekteki gelişimine katkı sağlayabilir
1 yorum
Hacker News yorumları
ruff,tyile birleşse daha iyi olurdu gibi geliyor;uv'nin paket ya da proje yönetimine odaklanması daha doğru, kod stili düzenlemeye kadar karışmaması gerektiğini düşünüyorum. Bana göreuv'nin kod dosyalarını değiştirdiği tek durum bağımlılık güncellemeleri (PEP 723) olmalıruffileuvbirleşmiyor; ayrı araçlar olarak kalacaklarını netleştirmek isterim. Amaç, formatter'ı ayrıca düşünmek istemeyen kullanıcılar için daha basit bir deneyim sunmak. Bu, Rust'tacargo fmtkomutunun arka plandarustfmtçalıştırmasına benzer bir yapıcargo fmtolmasını taklit ediyorlaruv'yi eksiksiz bir Python paket yöneticisi yapmak ve alt araçların her biri gerekirse ayrı ayrı da kullanılabilsin. Yaniuv, Python için cargo gibi; sadece hızlı bir type checker gerekiyorsaty, sadece formatter/linter gerekiyorsaruffseçilebilmeli. Bu açıdanruffilety'yi birleştirmenin pek anlamı yok gibi görünüyortydeuv'ye katılırsa nasıl olur diye merak ediyorum. Sonuçta hepsi astral.sh'den çıkıyor; belki vizyon budur, amatyhenüz hazır değiluv lintgibi bir seçenek ekleyip arka plandatyçalıştırmak olacağını düşünüyorum. İdeal olarak, tek bir standart komut ya da komut setiyle bir Python projesini hazırlayabilmek güzel olurdu: formatlama, lint, test, dağıtım. Belki de buradaki vizyon buuv'yi gerçekten çok seviyorum ama gereksiz yere giderek hantallaşıyor gibi, bu da biraz endişelendiriyor. Örneğin birçok alt komut çok sayıda kendine özgü bayrak destekliyor ve bazıları neredeyse aynı sonucu veriyor (uv run --no-projectileuv run --activegibi). Gereksiz yeni özellikler eklemektense mevcut araçlara ve dokümantasyonun iyileştirilmesine daha çok odaklanmalarını isterimuv syncteoride yeniden üretilebilir paket setleri kurabildiği için çok değerli, amatorch-tensorrtya daflash-attngibi karmaşık paketler ortamdan bağımsız olamıyor. Python topluluğu çoğu zaman sorunları "benim makinemde çalışıyor" diye kişiselleştiriyor, ama yazılımı dağıtılabilir, güvenli, tekrarlanabilir ve güvenilir hâle getirmenin maliyeti asla ortadan kalkmıyor; sadece daha sonra, daha kısıtlı koşullarda bir başkası ödüyor. Bu kadar farklı kullanıcı ve operasyon gereksinimini aynı anda karşılamaya çalışmak gerçekten zoruv'ye alt komut eklemenin neden hantallaşma sayıldığını pek anlayamıyorum.uvzaten karmaşık bir araç ve iyi belgelendirilmiş durumda. Bu kadar sezgisel ve kendini açıklayan komutlar doğal biçimde eklenebilir benceuvhakkında konuşurken, sanki "make komutunda çok fazla hedef var" demek gibi geliyoruvx ruff formatbir kelime daha uzun diye bunun kötü olduğunu sanmıyorum. Hatta asıl kafa karıştırıcı olan, gerçekten hangi formatter'ın çalıştığının belirsizleşmesi,ruff'ın otomatik kurulup kurulmadığı ya da eskisi gibi aracın indirilip cache'lenip cache'lenmediği olabilirpyprojectiçinden yapılandırabilsek daha da iyi olurduuv formatçalışmıyoruv'nin Python benimsenmesi ve onboarding üzerindeki etkisi zaten oldukça büyüktü; bu yüzden kod kalitesini daha kolay yükseltmenin her yolu memnuniyet verici. Elbetteruff'ı ayrı kullanabilir ya dapre-commityapılandırabilirim, amauv <özellik>gibi basit bir zihinsel model ekip için çok yardımcı oluyor. Başka formatter'larla entegrasyon da olsa harika olur; hatta SQL/dbt model formatlamasını da desteklerse daha ne olsun. Önce biraz deneyip potansiyeline bakacağımjust formatile Python/SQL/Bash/TypeScript hepsini tek seferde formatlayabilirsinuv'yi giderek daha fazla kullanıyorum ve güçlü yönlerini biliyorum, ama hâlâ benim için ilk tercih değil; bu değişiklik de tercihimi artıracak gibi durmuyorruffişlevlerininuvvetyiçine entegre olacağını düşünüyorum. Lint tarafı, kod tabanını daha iyi anlayantytarafından ele alınırsa daha akıllı olabilir; formatlama tarafını ise asıl amacı proje yönetimi olanuvüstlenebilirtyzatenruffile aynı depoda olduğuna göre, entegrasyon o kadar da uzak görünmüyoruv, Python'da cargo benzeri bir rol üstlenirse Python geliştirme deneyimi inanılmaz derecede iyileşir. 25 yılı aşkın süredir Python kullanıp sayısız eksiği türlü yollarla aşmış biri olarak, artık fazla düşünmeden her şeyi tek başınauvile çözebilmekten çok memnunumuv format, aslındauv run --with ruff ruffiçin bir kısayoluv fmtyapar veuv vetgibi bir şeyi de yol haritasına eklerdimuv format, temelderuff formatiçin bir frontend'e yakın; yeni bir formatter eklenmiş olmuyorruff formatı kolay kullanmak için eklenmiş bir kısayol olduğunu bilmekte fayda var