De Mypy para Ty: guia de adoção do verificador de tipos Python ultrarrápido em Rust criado pela empresa por trás do Ruff
(blog.pythonlibrary.org)Resumo:
- Aborda a adoção e a migração para o novo verificador de tipos Python em Rust,
ty, lançado pela Astral, empresa por trás do Ruff. - O
tyfunciona por padrão de forma muito semelhante ao modo strict do Mypy e oferece suporte nativo a instalação e execução viauv. - Ainda não há suporte oficial a pre-commit, mas é possível usar workarounds da comunidade, e o texto também apresenta em detalhes como integrar com o GitHub Actions.
Resumo detalhado:
1. Introdução ao Ty e principais características
No ecossistema de verificação de tipos em Python, até então liderado por Mypy e Pyright, surgiu agora o ty, desenvolvido pela Astral. Assim como o Ruff, ele foi escrito em Rust e oferece desempenho extremamente rápido.
2. Instalação e execução local
O ty pode ser instalado e executado facilmente com uv.
- Instalação:
# Instalar a ferramenta via uv uv tool install ty@latest # Ou usar a instalação standalone (consulte a documentação) - Execução:
# Executar após a instalação uv run ty # Executar sem instalar (usando uvx) uvx ty # Executar diretamente ty check
3. Configuração (Configuration)
A configuração pode ser feita via pyproject.toml ou ty.toml.
- Comportamento padrão: ao executar sem configuração adicional, ele funciona de forma muito semelhante ao modo strict do Mypy.
- Limitações: no momento, ele não destaca type hints ausentes (
missing type hints). Para impor isso, é preciso complementar com a regraflake8-annotationsdo Ruff empyproject.toml.
4. Integração com GitHub Actions
No ambiente de CI, é possível configurar a execução automática da verificação de tipos ao abrir um PR criando o arquivo .github/workflows/ty.yml.
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
(Observação: a versão do ty precisa ser atualizada conforme o estado dos releases.)
5. Integração com pre-commit
Atualmente não há suporte oficial a hooks de pre-commit (issue #269), mas é possível integrar ao .pre-commit-config.yaml usando workarounds fornecidos pela comunidade, como ty-pre-commit. Quando houver suporte oficial no futuro, recomenda-se atualizar a configuração.
Ainda não há comentários.