İçeriğe geç
edumintsBlog
Yazılım3 dk okuma

uv ve ty Araçlarını Bir Araya Getirmek

Kaynak: Hacker News

Paylaş
YazılımEdumints Blog
İçindekiler 3 başlık

Özet (TL;DR): Deneysel uv-ty entegrasyonu artık kullanıma sunuldu. Bu adım, Python betikleri (hem komut satırında hem de kod editöründe) için birinci sınıf destek ve birleştirilmiş bir uv check komutu sağlıyor. Projeyi ortak bir anlayışla ele alarak tamamen yeni yeteneklerin kapısını açan bütünleşik bir Astral araç zincirine doğru önemli bir ilerlemeyi temsil ediyor.

Astral olarak Python ekosistemi için yüksek performanslı araçlar geliştiriyoruz: paket yöneticimiz uv, kod denetleyici ve biçimlendiricimiz Ruff ve tip denetleyicimiz ile dil sunucumuz ty. Geçmişte her Astral aracı, Python geliştirme sürecinin farklı bir bileşenini daha verimli hale getirmeye odaklanmıştı. Ancak geleneksel olarak ayrı duran bu yetenekleri bütünleşik bir araç zincirinde birleştirerek Python'ı daha ileriye taşıma fırsatı görüyoruz.

Astral araç zinciri vizyonumuz oldukça net: Her araç tek başına kullanılabilir, faydalı ve ekosistemin geri kalanıyla uyumlu olmalı; ancak birlikte kullanıldıklarında çok daha güçlü hale gelmelidir. Bugün önizleme sürümünde erişime açılan deneysel uv ve ty entegrasyonunu duyuruyoruz. uv Python projenizin ortamını ve bağımlılıklarını anlarken, ty kodunuzu anlar. İkisini birleştirerek her iki aracın tek başına sunabileceğinin ötesinde yeni işlevlerin kilidini açıyoruz.

Python Betikleri İçin Birinci Sınıf Destek#

PEP 723, Python betiklerinin bağımlılıklarını ve Python sürüm gereksinimlerini satır içi üstveri (inline metadata) aracılığıyla tanımlamasına olanak tanır. uv, bir betiği çalıştırırken ortamı hazırlamak için bu üstveriyi zaten kullanmaktadır. Artık ty de betiklerinizi anlamak için bu üstveriden yararlanabiliyor.

Hem komut satırında hem de editörde ty, projenizdeki betikleri keşfetmek için satır içi üstverileri kullanır ve her betik için özel bir ortam hazırlamak üzere uv'den güç alır. Bu ortamlar, ty'nin betiklerinizi kendi tanımladıkları gereksinimlere göre denetlemesini sağlar.

  • Aynı kod deposu (repository) içindeki betikler birbirinden farklı gereksinimlere sahip olabilir.
  • Her betik, bağımlılıkları veya Python sürüm gereksinimleri içinde bulunduğu ana projeden farklı olsa bile kendi bağımlılık bildirimlerine göre denetlenir.
  • Bağımlılıkları PEP 723 ile satır içinde tanımlayabilir, dosyayı kaydederek uv ile senkronize edebilir ve editörünüzde ty'nin otomatik tamamlama, üzerine gelince bilgi gösterme (hover) ve Tanıma Git (Go to Definition) özelliklerini anında kullanabilirsiniz.

Editörünüzde bu entegrasyon etkinleştirildiğinde ty, betiğin ortamını arka planda hazırlamak için otomatik olarak uv'yi çağırır. Ardından betiğin bildirdiği gereksinimlere dayanarak tip denetimi, kodda gezinme ve tamamlama özellikleri sunar. Zamanla betik desteğini varsayılan olarak etkinleştirmeyi ve standart Python projeleri için otomatik ortam kurulumunu devreye almayı planlıyoruz.

Birleştirilmiş Bir Denetim Komutu#

uv check, ty desteğiyle başlayarak uv'ye birleştirilmiş bir tanılama arayüzü kazandırır. Zamanla kod denetimi (linting) ve tip kontrolünü tek bir komutta birleştirmek amacıyla uv check içinde Ruff desteği sunmayı da planlıyoruz.

  • uv check komutunu çalıştırmak; projenizin ortamını otomatik olarak hazırlar, gerekli bağımlılıkları yükler ve projenizi ty ile denetler. Her şey ek bir ayara gerek kalmadan doğrudan çalışır (uv check komutunu hiç çalıştırmazsanız mevcut uv deneyiminizde hiçbir şey değişmez; ty ikili dosyası yalnızca ilk çağrıda ayrı olarak kurulur).
  • uv check ile tekil paketleri veya tüm çalışma alanını (workspace) denetleyebilirsiniz. Bir çalışma alanında tek bir paketi seçmek için uv check --package isim komutunu veya tüm paketleri denetlemek için uv check --all-packages seçeneğini kullanabilirsiniz.

Geliştiriciler İçin Pratik Çıkarımlar#

  • Bağımsız Betiklerde Tam IDE Deneyimi: Tek dosyalık veri işleme veya otomasyon betikleri yazarken sanal ortam (virtualenv) oluşturma zahmeti ortadan kalkar; PEP 723 bildirimleri sayesinde editörünüz dış kütüphaneleri anında tanır.
  • Sürtünmesiz CI/CD ve Yerel Denetim: Ortam kurulumu ile tip kontrolünü tek bir uv check adımında birleştirmek, özellikle çoklu paket barındıran monorepo yapılarında geliştirme ve test süreçlerini ciddi ölçüde sadeleştirir.

Kaynak ve atıf

Bu yazı, Hacker News üzerinde yayımlanan içerikten yararlanılarak Edumints tarafından yapay zekâ desteğiyle Türkçe hazırlandı. Ayrıntılar ve yazarların kendi anlatımı için orijinaline bakabilirsin:

  • astral.sh/blog/uv-ty-integration