ty - Foglio di aiuto del controllore di tipo Python veloce
ty è un controllore di tipo Python estremamente veloce e server di linguaggio scritto in Rust da Astral (il team dietro Ruff e uv). Applica la stessa filosofia di prestazioni al controllo dei tipi: dove mypy può richiedere minuti su un codebase grande, ty mira al feedback quasi istantaneo, rendendo il controllo dei tipi pratico da eseguire ad ogni salvataggio piuttosto che solo in CI. Completa la toolchain moderna di Astral Python — uv per il packaging, Ruff per lint/format, ty per i tipi.
ty è più nuovo di mypy e ancora in via di maturazione. Convalidalo rispetto al tuo codebase prima di renderlo un gate CI duro.
Installazione
| Metodo | Comando |
|---|
| uv (consigliato) | uv tool install ty |
| uvx (nessuna installazione) | uvx ty check |
| pip | pip install ty |
| Verifica | ty --version |
Controllo del codice
| Comando | Descrizione |
|---|
ty check | Controlla il progetto attuale |
ty check src/ | Controlla un percorso specifico |
ty check --watch | Ricontrolla sui cambiamenti dei file |
ty check --output-format concise | Output compatto |
ty check --error-on-warning | Tratta gli avvisi come errori |
ty --help | Elenco completo delle opzioni |
Configurazione
ty legge pyproject.toml:
[tool.ty]
# Percorsi da controllare
src = ["src", "tests"]
[tool.ty.environment]
python-version = "3.12"
# Dove trovare le dipendenze
python = ".venv"
[tool.ty.rules]
# Metti a punto i singoli diagnostici
possibly-unbound-attribute = "warn"
unused-ignore-comment = "ignore"
| Sezione | Scopo |
|---|
[tool.ty] | Layout del progetto / percorsi inclusi |
[tool.ty.environment] | Versione Python, venv, percorsi di ricerca |
[tool.ty.rules] | Imposta ogni regola su error, warn o ignore |
Soppressione dei diagnostici
| Forma | Effetto |
|---|
# ty: ignore | Sopprimere tutti i diagnostici sulla linea |
# ty: ignore[rule-name] | Sopprimere una regola specifica |
# type: ignore | Anche rispettato (compatibile con mypy) |
Language Server (editor integration)
| Editor | Come |
|---|
| VS Code | Installa l”estensione Astral ty |
| Neovim | Configura ty server come LSP |
| Qualsiasi client LSP | Esegui ty server |
Il server di linguaggio fornisce errori di tipo inline, tipi al passaggio e vai a definizione con la stessa velocità della CLI.
Diagnostici tipici
| Diagnostico | Significa |
|---|
invalid-argument-type | L”argomento non corrisponde al tipo di parametro |
unresolved-attribute | L”attributo non esiste sul tipo |
possibly-unbound-variable | La variabile potrebbe essere utilizzata prima dell”assegnazione |
invalid-return-type | Il ritorno non corrisponde all”annotazione |
unresolved-import | L”importazione non può essere risolta |
# Un gate di qualità Python moderno e completo
uv sync # deps, locked e veloce
uv run ruff format . # formatta
uv run ruff check . # lint
uv run ty check # tipi
uv run pytest # test
| Strumento | Sostituisce |
|---|
| uv | pip, pip-tools, virtualenv, pyenv, poetry |
| Ruff | black, flake8, isort, pyupgrade, + altro |
| ty | mypy (controllo dei tipi) |
Integrazione CI
# Fallisci la build su errori di tipo
uvx ty check --error-on-warning
# Controlla solo i file modificati (con git)
git diff --name-only origin/main -- '*.py' | xargs uvx ty check
ty vs Altri controllori di tipo
| Aspetto | ty | mypy | Pyright |
|---|
| Linguaggio | Rust | Python | TypeScript/Node |
| Velocità | Molto veloce | Più lento | Veloce |
| Maturità | Più nuovo | Più maturo | Maturo |
| Editor LSP | Built-in | Via plugin | Built-in (Pylance) |
| Migliore per | Velocità + stack Astral | Compatibilità dell”ecosistema | Utenti VS Code |
Risorse