Từ Mypy sang Ty: Hướng dẫn áp dụng trình kiểm tra kiểu Python siêu nhanh nền tảng Rust do công ty đứng sau Ruff tạo ra
(blog.pythonlibrary.org)Tóm tắt:
- Bài viết trình bày cách áp dụng và di chuyển sang
ty, trình kiểm tra kiểu Python mới nền tảng Rust do Astral (công ty tạo ra Ruff) công bố. tymặc định hoạt động tương tự chế độ strict của Mypy và hỗ trợ cài đặt, chạy trực tiếp quauv.- Dù chưa có hỗ trợ pre-commit chính thức, vẫn có thể dùng workaround từ cộng đồng, đồng thời bài viết cũng giới thiệu chi tiết cách tích hợp với GitHub Actions.
Tóm tắt chi tiết:
1. Giới thiệu và đặc điểm của Ty
Trong hệ sinh thái kiểm tra kiểu Python vốn do Mypy và Pyright dẫn dắt, ty do Astral phát triển đã xuất hiện như một lựa chọn mới. Tương tự Ruff, nó được viết bằng Rust và nổi bật với tốc độ rất cao.
2. Cài đặt và chạy cục bộ
ty có thể được cài đặt và chạy dễ dàng thông qua uv.
- Cài đặt:
# Cài công cụ qua uv uv tool install ty@latest # Hoặc hỗ trợ cài đặt standalone (xem tài liệu) - Chạy:
# Chạy sau khi cài đặt uv run ty # Chạy không cần cài đặt (dùng uvx) uvx ty # Chạy trực tiếp ty check
3. Cấu hình (Configuration)
Có thể cấu hình thông qua pyproject.toml hoặc ty.toml.
- Hành vi mặc định: nếu chạy mà không có cấu hình riêng,
tyhoạt động rất giống chế độ strict của Mypy. - Giới hạn: hiện tại công cụ chưa đánh dấu các type hint bị thiếu. Để bắt buộc điều này, cần bổ sung quy tắc
flake8-annotationscủa Ruff vàopyproject.tomlđể bù đắp.
4. Tích hợp GitHub Actions
Trong môi trường CI, có thể tạo .github/workflows/ty.yml để tự động chạy kiểm tra kiểu khi tạo PR.
name: ty
on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
workflow_dispatch:
jobs:
build:
if: github.event.pull_request.draft == false
runs-on: self-hosted
steps:
- uses: actions/checkout@v3
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: "3.12"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install ty==0.0.7
- name: Run ty
run: ty check
continue-on-error: false
(Lưu ý: phiên bản ty cần được cập nhật theo tình hình phát hành.)
5. Tích hợp Pre-commit
Hiện chưa có hook pre-commit chính thức (issue #269), nhưng có thể tích hợp vào .pre-commit-config.yaml bằng workaround do cộng đồng cung cấp (ví dụ: ty-pre-commit). Khi có hỗ trợ chính thức trong tương lai, nên cập nhật lại cấu hình.
Chưa có bình luận nào.