An extremely fast Python type checker and language server, written in Rust.
Find a file
2025-05-12 14:27:48 -05:00
.github Restore readme transformation script (#330) 2025-05-12 13:40:00 -05:00
docs Split the documentation out of the top-level README (#331) 2025-05-12 13:45:02 -05:00
python/ty add py.typed (#276) 2025-05-08 09:00:10 -07:00
ruff@7a48477c67 Bump version to 0.0.0a8 (#298) 2025-05-09 11:17:13 -07:00
scripts Split the documentation out of the top-level README (#331) 2025-05-12 13:45:02 -05:00
.editorconfig Move TOML indent size config (#251) 2025-05-07 18:13:32 +00:00
.gitattributes Add .gitattributes to enforce lf line ending (#29) 2025-05-05 16:39:10 +02:00
.gitignore Initial commit 2025-05-02 11:37:31 -05:00
.gitmodules Add ruff as a submodule 2025-05-02 11:41:08 -05:00
.markdownlint.yaml Setup pre-commit (#28) 2025-05-05 16:38:54 +02:00
.pre-commit-config.yaml Split the documentation out of the top-level README (#331) 2025-05-12 13:45:02 -05:00
.python-version Commit the uv.lock and .python-version files (#61) 2025-05-06 09:45:39 -05:00
_typos.toml Update email in code of conduct (#55) 2025-05-06 08:32:29 +02:00
CHANGELOG.md Bump version to 0.0.0a8 (#298) 2025-05-09 11:17:13 -07:00
CODE_OF_CONDUCT.md Update email in code of conduct (#55) 2025-05-06 08:32:29 +02:00
CONTRIBUTING.md Add script to update ty.json in schemastore (#65) 2025-05-08 11:30:05 +00:00
dist-workspace.toml Bump version to 0.0.0a8 (#298) 2025-05-09 11:17:13 -07:00
Dockerfile Enable Docker build workflow (#38) 2025-05-05 15:48:32 -05:00
LICENSE Drop -MIT suffix from license file (#26) 2025-05-05 08:31:14 -05:00
pyproject.toml Bump version to 0.0.0a8 (#298) 2025-05-09 11:17:13 -07:00
README.md Update top-level warning (#334) 2025-05-12 14:27:48 -05:00
SECURITY.md Add SECURITY.md (#23) 2025-05-05 15:18:41 +02:00
uv.lock Bump version to 0.0.0a8 (#298) 2025-05-09 11:17:13 -07:00

ty

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

Warning

ty is in preview and is not ready for production use.

We're working hard to make ty stable and feature-complete, but until then, expect to encounter bugs, missing features, and fatal errors.

Getting started

Installation

uv tool install ty@latest

or add ty to your project:

uv add --dev ty

# With pip.
pip install ty

First steps

After installing ty, you can check that ty is available by running the ty command:

ty
An extremely fast Python type checker.

Usage: ty <COMMAND>

...

You should see a help menu listing the available commands.

For detailed information about command-line options, see the commands reference.

Checking a project

The easiest way to type check your project is by running ty through uv. To do that, add ty as a project dependency:

uv add --dev ty

and then just run uv run ty check to type check all python files in the project's root. If you don't have a project yet, run uv init to create one.

uv run ty check
WARN ty is pre-release software and not ready for production use. Expect to encounter bugs, missing features, and fatal errors.
All checks passed!

Note

As an alternative to uv run, you can also run ty by activating the project's virtual environment (source .venv/bin/active on Linux and macOS, or .venv\Scripts\activate on Windows) and running ty check directly.

ty checks the entire project by default, but you can also pass specific paths to check:

uv run ty check src/main.py

Learning more

To learn more about using ty, see the documentation.

Getting involved

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

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.

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.