ty - Verificador de Tipo Python Rápido - Guia de Referência
ty é um verificador de tipo Python extremamente rápido e servidor de linguagem, escrito em Rust por Astral (a equipe por trás de Ruff e uv). Aplica a mesma filosofia de desempenho à verificação de tipo: onde mypy pode levar minutos em um grande codebase, ty visa feedback quase instantâneo, tornando verificação de tipo prática para executar a cada salvar em vez de apenas em CI. Completa a toolchain Python moderna Astral — uv para packaging, Ruff para lint/format, ty para tipos.
ty é mais novo que mypy e ainda amadurecendo. Valide contra seu codebase antes de torná-lo um portão CI rígido.
Instalação
| Método | Comando |
|---|
| uv (recomendado) | uv tool install ty |
| uvx (sem instalação) | uvx ty check |
| pip | pip install ty |
| Verificar | ty --version |
Verificando Código
| Comando | Descrição |
|---|
ty check | Verificar o projeto atual |
ty check src/ | Verificar um caminho específico |
ty check --watch | Re-verificar em mudanças de arquivo |
ty check --output-format concise | Saída compacta |
ty check --error-on-warning | Tratar avisos como erros |
ty --help | Lista de opções completa |
Configuração
ty lê pyproject.toml:
[tool.ty]
# Caminhos para verificar
src = ["src", "tests"]
[tool.ty.environment]
python-version = "3.12"
# Onde encontrar dependências
python = ".venv"
[tool.ty.rules]
# Ajustar diagnósticos individuais
possibly-unbound-attribute = "warn"
unused-ignore-comment = "ignore"
| Seção | Propósito |
|---|
[tool.ty] | Layout de projeto / caminhos incluídos |
[tool.ty.environment] | Versão Python, venv, caminhos de busca |
[tool.ty.rules] | Definir cada regra para error, warn ou ignore |
Suprimindo Diagnósticos
| Forma | Efeito |
|---|
# ty: ignore | Suprimir todos os diagnósticos na linha |
# ty: ignore[rule-name] | Suprimir uma regra específica |
# type: ignore | Também respeitado (compatível com mypy) |
Servidor de Linguagem (Integração de Editor)
| Editor | Como |
|---|
| VS Code | Instalar extensão Astral ty |
| Neovim | Configurar ty server como LSP |
| Qualquer cliente LSP | Executar ty server |
O servidor de linguagem fornece erros de tipo inline, tipos ao pairar e ir-para-definição com a mesma velocidade do CLI.
Diagnósticos Típicos
| Diagnóstico | Significa |
|---|
invalid-argument-type | Argumento não corresponde ao tipo de parâmetro |
unresolved-attribute | Atributo não existe no tipo |
possibly-unbound-variable | Variável pode ser usada antes da atribuição |
invalid-return-type | Return não corresponde à anotação |
unresolved-import | Importação não consegue ser resolvida |
# Uma porta de qualidade Python moderna completa
uv sync # deps, locked e rápido
uv run ruff format . # formato
uv run ruff check . # lint
uv run ty check # tipos
uv run pytest # testes
| Ferramenta | Substitui |
|---|
| uv | pip, pip-tools, virtualenv, pyenv, poetry |
| Ruff | black, flake8, isort, pyupgrade, + mais |
| ty | mypy (verificação de tipo) |
Integração de CI
# Falhar a compilação em erros de tipo
uvx ty check --error-on-warning
# Verificar apenas arquivos alterados (com git)
git diff --name-only origin/main -- '*.py' | xargs uvx ty check
ty vs Outros Verificadores de Tipo
| Aspecto | ty | mypy | Pyright |
|---|
| Linguagem | Rust | Python | TypeScript/Node |
| Velocidade | Muito rápida | Mais lenta | Rápida |
| Maturidade | Mais novo | Mais maduro | Maduro |
| LSP de editor | Construído | Via plugins | Construído (Pylance) |
| Melhor para | Velocidade + stack Astral | Compatibilidade de ecossistema | Usuários VS Code |
Recursos