Salta ai contenuti

ty - Foglio di aiuto del controllore di tipo Python veloce

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

MetodoComando
uv (consigliato)uv tool install ty
uvx (nessuna installazione)uvx ty check
pippip install ty
Verificaty --version

Controllo del codice

ComandoDescrizione
ty checkControlla il progetto attuale
ty check src/Controlla un percorso specifico
ty check --watchRicontrolla sui cambiamenti dei file
ty check --output-format conciseOutput compatto
ty check --error-on-warningTratta gli avvisi come errori
ty --helpElenco 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"
SezioneScopo
[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

FormaEffetto
# ty: ignoreSopprimere tutti i diagnostici sulla linea
# ty: ignore[rule-name]Sopprimere una regola specifica
# type: ignoreAnche rispettato (compatibile con mypy)

Language Server (editor integration)

EditorCome
VS CodeInstalla l”estensione Astral ty
NeovimConfigura ty server come LSP
Qualsiasi client LSPEsegui 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

DiagnosticoSignifica
invalid-argument-typeL”argomento non corrisponde al tipo di parametro
unresolved-attributeL”attributo non esiste sul tipo
possibly-unbound-variableLa variabile potrebbe essere utilizzata prima dell”assegnazione
invalid-return-typeIl ritorno non corrisponde all”annotazione
unresolved-importL”importazione non può essere risolta

La toolchain Astral

# 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
StrumentoSostituisce
uvpip, pip-tools, virtualenv, pyenv, poetry
Ruffblack, flake8, isort, pyupgrade, + altro
tymypy (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

AspettotymypyPyright
LinguaggioRustPythonTypeScript/Node
VelocitàMolto velocePiù lentoVeloce
MaturitàPiù nuovoPiù maturoMaturo
Editor LSPBuilt-inVia pluginBuilt-in (Pylance)
Migliore perVelocità + stack AstralCompatibilità dell”ecosistemaUtenti VS Code

Risorse