Skip to content

uv check: Cara Type Checking Script Python Single-File dengan uv dan ty

Terbit Terakhir diperbarui 5 menit baca

Poin penting

  • Pada 13 Oktober 2026 Astral mengumumkan integrasi eksperimental uv dan ty yang menambah dukungan script PEP 723 dan perintah baru uv check.
  • Butuh uv 0.12.3 atau lebih baru dan ty 0.0.76 atau lebih baru, dan penyiapan environment untuk script bersifat opt-in karena menginstal dan menjalankan kode pihak ketiga.
  • Jalankan uv check --script example.py dan ty seharusnya menandai bug yang sengaja dibuat, yaitu status(42) yang mengirim int, bukan string.
  • Penulis memperlakukan output sebagai saran, bukan gerbang lolos atau gagal, sampai Anda melihat tingkat false positive-nya di kode Anda sendiri.
  • Pin dependensi script dan pertimbangkan uv run --exclude-newer supaya rilis berbahaya yang terbit kemarin tidak sampai ke Anda hari ini.

Versi bahasa Inggris: uv check: Finally, Type Checking for Single-File Python Scripts.

Kode Python paling penting di tempat Anda mungkin cuma script 60 baris dengan tiga dependensi dan tanpa type checking. File itu juga yang paling mungkin diedit asisten AI dan dijalankan sebelum ada yang membaca diff-nya.

Pada 13 Oktober 2026, Astral mengumumkan integrasi eksperimental antara uv dan ty yang langsung menyasar celah itu.

Ringkasan untuk pembaca non-teknis

  • Developer Python punya tool satu baris baru yang memeriksa script kecil dari satu kelas kesalahan umum sebelum dijalankan.
  • Ini penting karena script internal yang “sekadar cepat” sering berujung menjalankan ekspor tagihan, job data, dan deployment, dengan review jauh lebih sedikit daripada software “resmi”.
  • Statusnya eksperimental, jadi ini jaring pengaman, bukan jaminan.
  • Tanyakan ke tim teknis Anda: “Script mana saja yang dijalankan di production, dan apakah ada yang memeriksanya lebih dulu?”

Apa yang diumumkan

Menurut postingannya:

Kartu berisi persyaratan (uv 0.12.3, ty 0.0.76), rencana langkah berikutnya Astral, dan pengaturan opt-in untuk penyiapan environment.

  1. ty memahami metadata script inline PEP 723. Satu script yang mendeklarasikan dependensinya sendiri mendapat type checking dan fitur editor sesuai environment yang benar.
  2. Perintah baru uv check. Perintah ini menyiapkan environment proyek, menginstal dependensi, dan menjalankan ty.

Persyaratannya uv 0.12.3 atau lebih baru dan ty 0.0.76 atau lebih baru. Statusnya eksperimental. Astral berencana mengaktifkan dukungan script secara default, menambah penyiapan environment otomatis untuk proyek biasa, dan memasukkan Ruff ke uv check. Satu detail penting: menyiapkan environment untuk script bersifat opt-in di editor dan CLI, karena itu berarti menginstal dan menjalankan kode pihak ketiga.

Kenapa ini masuk akal

Hambatannya tidak pernah di type checking itu sendiri. Hambatannya environment. Checker harus tahu package apa yang Anda import. Proyek punya venv. Script lepas tidak punya apa-apa, jadi checker menebak atau menandai semua import.

Script Python dengan blok dependensi inline PEP 723, di mana ty membaca blok yang sama dan menandai status(42) karena mengirim int padahal diharapkan string.

PEP 723 sudah menaruh daftar dependensi di dalam script. Sekarang checker membaca blok yang sama. Satu sumber kebenaran, tanpa langkah setup yang bisa terlupa.

Kata para praktisi

Saya belum menemukan thread diskusi besar soal pengumuman ini, jadi pandangan di bawah berasal dari reaksi terhadap ty dan Astral secara lebih luas.

  • Kecepatan adalah headline-nya. Di thread Hacker News untuk ty, seorang komentator melaporkan mypy butuh 18 detik di proyek besar, sedangkan ty sekitar setengah detik.
  • Cepat bukan berarti akurat. Komentator lain di thread itu melihat ty melaporkan sekitar 1.600 diagnostik, sebagian besar false positive, sementara Pyright menemukan 10 error nyata. Itu build awal, dan InfoWorld kemudian melaporkan ty mencapai beta, tetapi ini pengingat yang wajar untuk menguji di kode Anda sendiri.
  • Celah ekosistem. Suara ketiga berargumen bahwa library seperti Django dan SQLAlchemy bergantung pada magic runtime yang sulit ditangani checker, dan dukungan plugin menentukan kesiapan production.
  • Siapa pemegang roadmap. Sisi skeptis di sini bukan teknis. Astral bergabung dengan OpenAI pada Maret 2026, dan sebagian komunitas khawatir prioritasnya akan bergeser ke workflow coding agent. Kedua perusahaan menyatakan uv, Ruff, dan ty tetap open source, dan lisensi MIT membuat fork tetap mungkin, meski komentator mencatat merawat fork itu sulit.

Pendapat saya

Saya suka ini, dan saya akan memakainya untuk script hari ini, dengan ekspektasi yang tepat.

Di mana saya setuju dengan banyak orang: kecepatan lebih tidak penting daripada kepercayaan. Type checker yang terlalu sering salah alarm akan dimatikan dalam seminggu. Jadi saya akan menjalankan uv check dulu pada script baru dan memperlakukan outputnya sebagai saran, bukan gerbang, sampai Anda melihat tingkat false positive-nya di kode Anda.

Di mana saya tidak setuju dengan kekhawatiran soal kepemilikan Astral: itu pertanyaan tata kelola yang nyata, tetapi alasannya untuk menjaga pemakaian Anda tetap portabel, bukan untuk menghindari tool yang bagus. Metadata PEP 723 dan type annotation standar bekerja dengan checker apa pun. Kalau Anda hanya memakai itu, pindah nanti nyaris tanpa biaya. Integrasinya sendiri adalah bagian kecil yang mudah diganti.

Untuk tim, kerangka yang berguna: script sekali pakai kini punya standar kualitas minimum yang murah. Ini relevan ketika asisten AI yang menulis dan mengedit script itu. Type error yang tertangkap pukul 6:04 lebih murah daripada kegagalan pukul 6:05.

Coba dalam 15 menit

1. Update

Terminal berisi uv self update, uv --version, dan uv check --script example.py, plus varian project dan workspace dari uv check.

uv self update
uv --version

Anda butuh 0.12.3 atau lebih baru. Kalau uv diinstal dengan cara lain, update lewat package manager tersebut.

2. Script dengan bug yang disengaja

# /// script
# requires-python = ">=3.12"
# dependencies = ["httpx"]
# ///
import httpx


def status(url: str) -> int:
    return httpx.get(url, timeout=5).status_code


print(status("https://example.com"))
print(status(42))

Simpan sebagai example.py. Baris terakhir mengirim int padahal diharapkan string.

3. Jalankan pengecekan

uv check --script example.py

ty seharusnya menandai status(42). Kalau perintahnya tidak dikenal, uv Anda terlalu lama atau permukaan eksperimentalnya sudah berubah, jadi baca ulang pengumumannya.

4. Cek proyek atau workspace

uv check
uv check --package <name>
uv check --all-packages

5. Opt-in editor dan CLI

Pengaturan VS Code dari postingannya:

{
  "ty.experimental.useUv": "on"
}

Untuk ty saja:

TY_UV=scripts ty check

Kebiasaan yang cocok dipasangkan

Pin dependensi script. httpx tanpa versi berarti perilaku script berubah setiap kali ada rilis baru. Tulis httpx==<versi yang Anda uji>, dan pertimbangkan batas tanggal saat menjalankan:

uv run --exclude-newer 2026-10-01T00:00:00Z example.py

Ini membatasi resolusi ke package yang terbit sebelum tanggal tersebut, sehingga rilis berbahaya yang di-push kemarin tidak bisa sampai ke Anda hari ini.

Yang tidak dilakukannya

Type checking tidak akan menangkap logika yang salah, asumsi keliru soal sebuah API, atau kode valid yang melakukan hal yang salah. Ia menghilangkan satu kelas kesalahan murah dengan harga satu perintah.

Belajar lebih lanjut

Pertanyaan

Script “sementara” mana di tempat Anda yang kini dipakai orang lain, dan maukah Anda membiarkan uv check jadi yang pertama membacanya?

Pertanyaan yang sering diajukan

Bagaimana cara type check script Python single-file dengan uv?
Update ke uv 0.12.3 atau lebih baru lalu jalankan uv check --script example.py. Metadata inline PEP 723 di script memberi tahu ty dependensi mana yang dipakai.
Versi apa yang dibutuhkan untuk uv check?
Anda butuh uv 0.12.3 atau lebih baru dan ty 0.0.76 atau lebih baru, dan integrasinya masih eksperimental.
Apakah ty sudah cukup akurat untuk diandalkan?
Belum bisa dipercaya buta. Satu laporan awal di Hacker News menyebut sekitar 1.600 diagnostik yang sebagian besar false positive, sementara Pyright menemukan 10 error nyata, jadi penulis menyarankan memperlakukan output sebagai saran dulu.
Bagikan Bagikan ke X Bagikan ke LinkedIn

About the author

Portrait of Kiell Tampubolon

Security Engineer & Technical Writer

Security engineer and technical writer based in Batam, Indonesia. I review and harden MCP servers and AI agents, build security automation, and write up what holds and what fails. I also train on DNS security as a PANDI .id Academy trainer.

All writing | RSS | Markdown