ty - Verificador de tipos rápido de Python
ty es un verificador de tipos Python extremadamente rápido y servidor de lenguaje, escrito en Rust por Astral (el equipo detrás de Ruff y uv). Aplica la misma filosofía de rendimiento a verificación de tipos: donde mypy puede tardar minutos en una base de código grande, ty apunta a retroalimentación casi instantánea, haciendo verificación de tipos práctica para ejecutar en cada guardado en lugar de solo en CI. Completa la cadena de herramientas Python moderna de Astral — uv para empaquetado, Ruff para lint/formato, ty para tipos.
ty es más nuevo que mypy y aún madurando. Valídalo contra tu base de código antes de hacer que sea una puerta CI dura.
Instalación
| Método | Comando |
|---|
| uv (recomendado) | uv tool install ty |
| uvx (sin instalar) | uvx ty check |
| pip | pip install ty |
| Verificar | ty --version |
Verificación de código
| Comando | Descripción |
|---|
ty check | Verifica el proyecto actual |
ty check src/ | Verifica una ruta específica |
ty check --watch | Re-verifica en cambios de archivo |
ty check --output-format concise | Salida compacta |
ty check --error-on-warning | Trata advertencias como errores |
ty --help | Lista completa de opciones |
Configuración
ty lee pyproject.toml:
[tool.ty]
# Rutas a verificar
src = ["src", "tests"]
[tool.ty.environment]
python-version = "3.12"
# Dónde encontrar dependencias
python = ".venv"
[tool.ty.rules]
# Ajusta diagnósticos individuales
possibly-unbound-attribute = "warn"
unused-ignore-comment = "ignore"
| Sección | Propósito |
|---|
[tool.ty] | Disposición del proyecto / rutas incluidas |
[tool.ty.environment] | Versión de Python, venv, rutas de búsqueda |
[tool.ty.rules] | Establece cada regla en error, warn o ignore |
Supresión de diagnósticos
| Forma | Efecto |
|---|
# ty: ignore | Suprime todos los diagnósticos en la línea |
# ty: ignore[rule-name] | Suprime una regla específica |
# type: ignore | También respetado (compatible con mypy) |
Servidor de lenguaje (integración de editor)
| Editor | Cómo |
|---|
| VS Code | Instala la extensión ty de Astral |
| Neovim | Configura ty server como LSP |
| Cualquier cliente LSP | Ejecuta ty server |
El servidor de lenguaje da errores de tipo en línea, tipos de desplazamiento y ir-a-definición con la misma velocidad que el CLI.
Diagnósticos típicos
| Diagnóstico | Significa |
|---|
invalid-argument-type | El argumento no coincide con el tipo de parámetro |
unresolved-attribute | El atributo no existe en el tipo |
possibly-unbound-variable | La variable puede usarse antes de asignación |
invalid-return-type | El retorno no coincide con la anotación |
unresolved-import | La importación no puede resolverse |
La cadena de herramientas de Astral
# Una puerta de calidad de Python completamente moderna
uv sync # deps, bloqueados y rápidos
uv run ruff format . # formato
uv run ruff check . # lint
uv run ty check # tipos
uv run pytest # pruebas
| Herramienta | Reemplaza |
|---|
| uv | pip, pip-tools, virtualenv, pyenv, poetry |
| Ruff | black, flake8, isort, pyupgrade, + más |
| ty | mypy (verificación de tipos) |
Integración en CI
# Falla la compilación en errores de tipo
uvx ty check --error-on-warning
# Solo verifica archivos cambiados (con git)
git diff --name-only origin/main -- '*.py' | xargs uvx ty check
ty vs otros verificadores de tipos
| Aspecto | ty | mypy | Pyright |
|---|
| Idioma | Rust | Python | TypeScript/Node |
| Velocidad | Muy rápido | Más lento | Rápido |
| Madurez | Más nuevo | Más maduro | Maduro |
| LSP del editor | Integrado | Vía complementos | Integrado (Pylance) |
| Mejor para | Velocidad + pila de Astral | Compatibilidad del ecosistema | Usuarios de VS Code |
Recursos