Ngày 13/10/2026, Astral công bố tích hợp thử nghiệm giữa uv và ty: ty giờ hiểu được metadata nội tuyến PEP 723 của script Python một file, và lệnh mới uv check tự chuẩn bị môi trường rồi chạy ty kiểm tra toàn bộ project chỉ bằng một câu lệnh (cần uv 0.12.3+, ty 0.0.76+).
Nghịch lý: script Python 60 dòng chạy báo cáo hay deployment thường ít được review nhất, nhưng lại chạy những việc quan trọng nhất — và trước đây type checker không biết script cần những dependency nào.
Script một file cuối cùng cũng được kiểm tra đúng cách
PEP 723 cho phép một script Python khai báo dependency và yêu cầu phiên bản Python ngay trong chính file đó, ở khối comment metadata. uv vốn đã dùng metadata này để chuẩn bị môi trường khi chạy script. Giờ đây, ty cũng đọc được metadata đó: nó phát hiện các script trong project, nhờ uv chuẩn bị môi trường riêng cho từng script, rồi kiểm tra kiểu theo đúng dependency mà script khai báo.
Lệnh uv check làm được gì
uv check là giao diện chẩn đoán thống nhất mới của uv, mở đầu bằng hỗ trợ ty. Chạy một lệnh, uv tự chuẩn bị môi trường của project, cài dependency cần thiết rồi kiểm tra code bằng ty.
Lệnh này làm việc ở cả cấp package lẫn toàn bộ workspace: uv check --package <tên> kiểm tra một package, uv check --all-packages kiểm tra mọi package, và uv check --script example.py kiểm tra một script độc lập theo đúng dependency nó khai báo. Cho CI, uv check dùng đúng phiên bản ty ghi trong lockfile, nên mọi máy đều kiểm tra bằng cùng một phiên bản.
Dùng thử ngay hôm nay
Vì còn thử nghiệm nên phần tự động chuẩn bị môi trường cho script hiện là opt-in: việc cài dependency đồng nghĩa với việc thực thi code của bên thứ ba. Trong VS Code, cài uv và extension ty, bật "ty.experimental.useUv": "on" trong settings.json. Trên dòng lệnh, uv check bật tích hợp sẵn mà không cần cấu hình thêm. Về lâu dài, Astral sẽ bật hỗ trợ script theo mặc định và đưa cả Ruff vào uv check.
Điều này có ý nghĩa gì với bạn
Giá trị lớn nhất của uv check là hạ rào cản kiểm tra kiểu xuống gần bằng không cho những đoạn code hay bị bỏ quên. Nếu team bạn có một thư mục script chạy cron, ETL hay công cụ nội bộ, hãy thử đưa uv check vào pipeline: khai báo dependency bằng PEP 723 cho các script đó, chạy một lệnh duy nhất trong CI, và bạn sẽ bắt được lỗi kiểu sai trước khi script chạy trong production. Vì tích hợp còn thử nghiệm, hãy bắt đầu ở chế độ báo cáo trong CI.
Bài viết liên quan
- uv 0.13.0 ra mắt: Python 3.15 thành phiên bản mặc định, nhưng đừng vội nâng cấp mà không đọc 3 thay đổi này
- Pydantic 2.14 ra mắt: hỗ trợ Python 3.15, MISSING sentinel chính thức và type checking chính xác hơn
- Python phát hành khẩn cấp đợt 2: 3.15.2, 3.14.10 và 3 bản vá nữa — lần này ssl tự chặn khóa CA bị lộ
Câu hỏi thường gặp
uv check khác gì với ty check?
ty check chỉ kiểm tra code, còn uv check lo thêm phần chuẩn bị môi trường: đồng bộ dependency rồi mới chạy ty theo đúng phiên bản trong lockfile.
Script không khai báo PEP 723 thì sao?
ty vẫn kiểm tra được script đó, nhưng không có metadata để biết dependency nào cần cài — nó sẽ dựa vào môi trường hiện tại. Để hưởng lợi đầy đủ, hãy thêm khối metadata PEP 723, ví dụ bằng uv init --script.
Có nên thay mypy hay Pyright bằng ty ngay không?
Chưa hẳn. ty vẫn đang ở giai đoạn beta, trong khi mypy và Pyright đã trưởng thành. uv check đáng thử, đặc biệt nếu bạn đã dùng uv, nhưng hãy thử trên codebase của bạn trước khi chuyển đổi.
💬 Tin này ảnh hưởng tới dự án của bạn thế nào? Chia sẻ góc nhìn của bạn trong phần bình luận — mình đọc hết và sẽ tổng hợp những ý hay nhất.
Nguồn tham khảo
- Astral — “Bringing uv and ty together” — https://astral.sh/blog/uv-ty-integration
- DEV Community — “uv check: Finally, Type Checking for Single-File Python Scripts” — https://dev.to/kielltampubolon/uv-check-finally-type-checking-for-single-file-python-scripts-1822
