ty

An extremely fast Python type checker and language server, written in Rust.

19,444 stars Python Markdown Skills API Spec
AI Prompts & Specs

Repository: astral-sh/ty


Stars: 18341

README.md

ty

![ty](https://github.com/astral-sh/ty)
![PyPI](https://pypi.python.org/pypi/ty)
![Discord](https://discord.com/invite/astral-sh)

An extremely fast Python type checker and language server, written in Rust.

<br />

<p align="center">
<img alt="Shows a bar chart with benchmark results." width="500px" src="https://raw.githubusercontent.com/astral-sh/ty/main/docs/assets/ty-benchmark-cli.svg">
</p>

<p align="center">
<i>Type checking the <a href="https://github.com/home-assistant/core">home-assistant</a> project without caching.</i>
</p>

<br />

ty is backed by Astral, the creators of
uv and Ruff.

ty is currently in beta.

Highlights

- 10x - 100x faster than mypy and Pyright
- Comprehensive diagnostics with rich contextual information
- Configurable rule levels, per-file overrides, suppression comments, and first-class project support
- Designed for adoption, with support for redeclarations and partially typed code
- Language server with code navigation, completions, code actions, auto-import, inlay hints, on-hover help, etc.
- Fine-grained incremental analysis designed for fast updates when editing files in an IDE
- Editor integrations for VS Code, PyCharm, Neovim and more
- Advanced typing features like first-class intersection types, advanced type narrowing, and
sophisticated reachability analysis

Getting started

Run ty with uvx to get started quickly:

shell
uvx ty check

Or, check out the ty playground to try it out in your browser.

To learn more about using ty, see the documentation.

Installation

To install ty, see the installation documentation.

To add the ty language server to your editor, see the editor integration guide.

Getting help

If you have questions or want to report a bug, please open an
issue in this repository.

You may also join our Discord server.

Contributing

Development of this project takes place in the Ruff repository
at this time. Please open pull requests there for changes
to anything in the ruff submodule (which includes all of the Rust source code).

See the
contributing guide for more details.

Version policy

ty uses 0.0.x versioning. ty does not yet have a stable API; breaking changes, including changes
to diagnostics, may occur between any two versions. See the type system support
tracking issue for a detailed overview of currently supported features.

FAQ

<!-- We intentionally use smaller headings for the FAQ items -->

<!-- markdownlint-disable MD001 -->

#### Why is ty doing \_\_\_\_\_?

See our typing FAQ.

#### How do you pronounce ty?

It's pronounced as "tee - why" (/tiː waɪ/)

#### How should I stylize ty?

Just "ty", please.

<!-- markdownlint-enable MD001 -->

License

ty is licensed under the MIT license (LICENSE or
<https://opensource.org/licenses/MIT>).

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in ty
by you, as defined in the MIT license, shall be licensed as above, without any additional terms or
conditions.

<div align="center">
<a target="_blank" href="https://astral.sh" style="background:none">
<img src="https://raw.githubusercontent.com/astral-sh/uv/main/assets/svg/Astral.svg" alt="Made by Astral">
</a>
</div>