uv check: Cara Type Checking Script Python Single-File dengan uv dan ty
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:

- ty memahami metadata script inline PEP 723. Satu script yang mendeklarasikan dependensinya sendiri mendapat type checking dan fitur editor sesuai environment yang benar.
- 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.

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

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
- Panduan uv untuk scripts untuk metadata inline secara mendalam.
- PEP 723, yang pendek dan enak dibaca.
- Repositori ty, untuk mengikuti perubahan selama integrasinya eksperimental.
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.
About the author
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.
Artikel terkait
-
4 min read
Three PRs to Rowboat in 24 Hours, One of Them Taught Me More Than the Others
Three PRs to Rowboat in 24 hours using Claude Code, plus what auditing ghost-claimed issues taught me about picking issues and reviewing agent diffs.
- Open Source
- Engineering Practice
-
3 min read
Why Quality, DCO Compliance, and Ethics Beat Volume in AI-Driven Engineering
I audited 25+ Tier-1 open-source repos and closed 25 pull requests instead of shipping them. Why quality, DCO compliance and ethics beat volume in AI-driven engineering.
- Open Source
- Engineering Practice
-
8 min read
Cooldown 1 Hari Memblokir 70% Rilis npm yang Dibajak di 2026. Untuk Typosquat, 7 Hari Masih Meloloskan 45%
Saya memutar ulang 11.556 paket npm dan PyPI berbahaya 2026 terhadap cooldown dependensi. Pembajakan cepat mati, typosquat tidak, dan perbaikan ikut tertunda.
- Security Engineering
- Engineering Practice
All writing | RSS | Markdown