1 puan yazan GN⁺ 2025-08-23 | 1 yorum | WhatsApp'ta paylaş
  • Yeni uv sürümünde kod biçimlendirme özelliği deneysel olarak sunuluyor
  • uv format komutu, 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 format komutu, 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 format komutunu ç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 format aktif 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

 
GN⁺ 2025-08-23
Hacker News yorumları
  • ruff, ty ile 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öre uv'nin kod dosyalarını değiştirdiği tek durum bağımlılık güncellemeleri (PEP 723) olmalı
    • ruff ile uv birleş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'ta cargo fmt komutunun arka planda rustfmt çalıştırmasına benzer bir yapı
    • Rust'taki cargo içinde cargo fmt olmasını taklit ediyorlar
    • Esasen amaç uv'yi eksiksiz bir Python paket yöneticisi yapmak ve alt araçların her biri gerekirse ayrı ayrı da kullanılabilsin. Yani uv, Python için cargo gibi; sadece hızlı bir type checker gerekiyorsa ty, sadece formatter/linter gerekiyorsa ruff seçilebilmeli. Bu açıdan ruff ile ty'yi birleştirmenin pek anlamı yok gibi görünüyor
    • Eğer bir gün ty de uv'ye katılırsa nasıl olur diye merak ediyorum. Sonuçta hepsi astral.sh'den çıkıyor; belki vizyon budur, ama ty henüz hazır değil
    • Bir sonraki mantıklı adımın uv lint gibi bir seçenek ekleyip arka planda ty ç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 bu
  • uv'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-project ile uv run --active gibi). Gereksiz yeni özellikler eklemektense mevcut araçlara ve dokümantasyonun iyileştirilmesine daha çok odaklanmalarını isterim
    • Python projelerini kararlı, yeniden üretilebilir ve taşınabilir yapmak gerçekten zor. uv sync teoride yeniden üretilebilir paket setleri kurabildiği için çok değerli, ama torch-tensorrt ya da flash-attn gibi 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 zor
    • uv'ye alt komut eklemenin neden hantallaşma sayıldığını pek anlayamıyorum. uv zaten karmaşık bir araç ve iyi belgelendirilmiş durumda. Bu kadar sezgisel ve kendini açıklayan komutlar doğal biçimde eklenebilir bence
    • uv hakkında konuşurken, sanki "make komutunda çok fazla hedef var" demek gibi geliyor
    • Bu seçeneklerin ana çalıştırılabilir dosyaya gömülü mü olduğunu, yoksa apt ya da cargo gibi ayrı binary'ler olarak mı çalıştığını merak ediyorum
  • Bence bu güncelleme kesinlikle iyi bir tercih. İnsanların neden daha iyi bir yöne bu kadar karşı çıktığını anlamıyorum. Elbette "zaten biraz daha zahmetli bir yoldan yapılabiliyor" denebilir, ama mesele zaten o "biraz daha zahmetli" kısmı
    • uvx ruff format bir 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 olabilir
    • Buna güçlü biçimde katılıyorum. Hatta formatter'ı pyproject içinden yapılandırabilsek daha da iyi olurdu
    • Şu anki en büyük şikâyetim, başka formatter'lar için destek görünmüyor olması. Projemde black kullanıyorsam uv format çalışmıyor
  • Şahsen bu değişiklikle küçük ekibimdeki (ana üyeleri aktüerlerden oluşuyor) kod formatlamasının ciddi biçimde kolaylaşacağını düşündüğüm için heyecanlıyım. uv'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. Elbette ruff'ı ayrı kullanabilir ya da pre-commit yapılandırabilirim, ama uv <ö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ğım
    • O kadar çoklu formatlama gerekiyorsa Makefile ya da justfile gibi bir şey kullanmak daha iyi olabilir. O zaman just format ile Python/SQL/Bash/TypeScript hepsini tek seferde formatlayabilirsin
  • Biraz fazla özellik gibi hissettiriyor. Bir yıldan uzun süredir uv'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 durmuyor
    • Özellikle bu yaklaşımda neyin sorunlu olduğunu merak ediyorum. Go, Rust ve Elixir bunu yapıyor ve ilgili ekosistemlerde proje kurulumunu ve kullanımını ciddi biçimde kolaylaştırıyor. Topluluğun ortak bir araç seti etrafında yoğunlaşmasını sağlıyor ve hem yeni başlayanlar hem uzmanlar için tutarlı bir giriş noktası sunuyor
    • Öyleyse en çok hangi aracı tercih ettiğini merak ettim
  • Günün birinde ruff işlevlerinin uv ve ty içine entegre olacağını düşünüyorum. Lint tarafı, kod tabanını daha iyi anlayan ty tarafından ele alınırsa daha akıllı olabilir; formatlama tarafını ise asıl amacı proje yönetimi olan uv üstlenebilir
    • ty zaten ruff ile aynı depoda olduğuna göre, entegrasyon o kadar da uzak görünmüyor
  • Paket yöneticileri çalışma ortamına paket kurmak için vazgeçilmez, ama geliştirmeye özel araçlarla karışmaları bana biraz "çekici ama tehlikeli bir tuzak" gibi geliyor. Evet, Go ve Rust da bunu yapıyor, ama temelden bakınca bunun o kadar iyi bir yapı olduğundan emin değilim
    • Kulağa çok olumsuz gelebilir ama cargo'yu yoğun kullanmış biri olarak bu tür "kötü fikirlerin" daha fazla olmasını isterim. Eğer uv, 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şına uv ile çözebilmekten çok memnunum
  • Yeni uv format, aslında uv run --with ruff ruff için bir kısayol
  • Bu gidişatı gerçekten seviyorum. Ben olsam adını uv fmt yapar ve uv vet gibi bir şeyi de yol haritasına eklerdim
  • Hâlihazırda kendini kanıtlamış pek çok kod formatter aracı varken bunun eklenmesi için hiçbir neden göremiyorum. Sadece özellik sayısı artmış gibi geliyor; bir süre hiçbir pipeline'ıma eklemeyi düşünmüyorum
    • uv format, temelde ruff format için bir frontend'e yakın; yeni bir formatter eklenmiş olmuyor
    • Bunun, zaten birçok kişinin kullandığı ruff formatı kolay kullanmak için eklenmiş bir kısayol olduğunu bilmekte fayda var