De Mypy a Ty: guía para adoptar el rapidísimo verificador de tipos de Python basado en Rust creado por los autores de Ruff
(blog.pythonlibrary.org)Resumen:
- Se explica cómo adoptar y migrar al nuevo verificador de tipos de Python basado en Rust,
ty, publicado por Astral, la empresa detrás de Ruff. tyfunciona por defecto de forma muy similar al modostrictde Mypy y ofrece compatibilidad nativa para instalación y ejecución medianteuv.- Aunque todavía no tiene soporte oficial para pre-commit, se pueden usar soluciones alternativas de la comunidad, y también se detalla cómo integrarlo con GitHub Actions.
Resumen detallado:
1. Introducción a Ty y sus características
En el ecosistema de verificación de tipos de Python, hasta ahora dominado por Mypy y Pyright, aparece ty, desarrollado por Astral. Al igual que Ruff, está escrito en Rust y presume una velocidad muy alta.
2. Instalación y ejecución local
ty puede instalarse y ejecutarse fácilmente con uv.
- Instalación:
# Instalar la herramienta con uv uv tool install ty@latest # O usar la instalación standalone (consulta la documentación) - Ejecución:
# Ejecutar después de instalar uv run ty # Ejecutar sin instalar (usando uvx) uvx ty # Ejecutar directamente ty check
3. Configuración
Se puede configurar mediante pyproject.toml o ty.toml.
- Comportamiento predeterminado: al ejecutarse sin configuración adicional, se comporta de forma muy parecida al modo
strictde Mypy. - Limitaciones: actualmente no resalta las anotaciones de tipo faltantes. Si se quiere exigir esto, hay que complementarlo agregando las reglas de
flake8-annotationsde Ruff enpyproject.toml.
4. Integración con GitHub Actions
En entornos de CI, se puede crear .github/workflows/ty.yml para ejecutar automáticamente la verificación de tipos al abrir un 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
(Nota: la versión de ty debe actualizarse según el estado de las releases.)
5. Integración con pre-commit
Actualmente no hay soporte oficial para hooks de pre-commit (issue #269), pero se puede integrar en .pre-commit-config.yaml usando soluciones alternativas de la comunidad, como ty-pre-commit. Cuando haya soporte oficial más adelante, se recomienda actualizar la configuración.
Aún no hay comentarios.