Dari Mypy ke Ty: Panduan adopsi Python type checker supercepat berbasis Rust buatan pembuat Ruff
(blog.pythonlibrary.org)Ringkasan:
- Membahas cara mengadopsi dan bermigrasi ke
ty, Python type checker baru berbasis Rust yang dirilis oleh Astral (pembuat Ruff). typada dasarnya bekerja mirip dengan mode strict di Mypy, dan secara default mendukung instalasi serta eksekusi melaluiuv.- Dukungan pre-commit resmi belum tersedia, tetapi workaround dari komunitas dapat digunakan, dan cara integrasi dengan GitHub Actions juga dijelaskan secara rinci.
Ringkasan detail:
1. Pengenalan dan karakteristik Ty
Dalam ekosistem type checking Python yang selama ini dipimpin oleh Mypy dan Pyright, kini hadir ty yang dikembangkan oleh Astral. Seperti Ruff, ty ditulis dalam Rust dan menawarkan performa yang sangat cepat.
2. Instalasi dan menjalankan secara lokal
ty dapat diinstal dan dijalankan dengan mudah melalui uv.
- Instalasi:
# Instal tool melalui uv uv tool install ty@latest # Atau mendukung instalasi standalone (lihat dokumentasi) - Menjalankan:
# Jalankan setelah instalasi uv run ty # Jalankan tanpa instalasi (menggunakan uvx) uvx ty # Jalankan langsung ty check
3. Konfigurasi
Konfigurasi dapat dilakukan melalui pyproject.toml atau ty.toml.
- Perilaku default: Saat dijalankan tanpa konfigurasi tambahan, perilakunya sangat mirip dengan mode strict di Mypy.
- Keterbatasan: Saat ini
tybelum menandai missing type hints. Jika ingin menegakkannya, perlu menambahkan aturanflake8-annotationsmilik Ruff kepyproject.tomlsebagai pelengkap.
4. Integrasi GitHub Actions
Di lingkungan CI, Anda dapat membuat .github/workflows/ty.yml agar type checking berjalan otomatis saat PR dibuat.
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
(Catatan: versi ty perlu diperbarui sesuai dengan rilis terbaru.)
5. Integrasi pre-commit
Saat ini hook pre-commit resmi belum didukung (issue #269), tetapi Anda dapat mengintegrasikannya ke .pre-commit-config.yaml menggunakan workaround dari komunitas, misalnya ty-pre-commit. Jika nanti dukungan resmi tersedia, disarankan untuk memperbarui konfigurasinya.
Belum ada komentar.