For a static type checker for Python codebases, the strongest matches are python/mypy (mypy is the standard static type checker for Python), google/pytype (Pytype is a full-featured static type checker for Python) and microsoft/pyright (Pyright is a dedicated static type checker for Python). astral-sh/ty and facebook/pyre-check round out the shortlist. Each is ranked by relevance to your query, popularity and recent activity.
Static analysis tools that identify type errors and enforce type hints within Python source code.
mypy is a static type checker for Python that analyzes source code to detect type errors and inconsistencies without executing the program. It functions as a static analysis tool and type inference engine, providing a gradual typing system that allows type hints to be added to a codebase incrementally while maintaining compatibility with dynamic typing. The project distinguishes itself through a combination of performance and precision features. It utilizes a daemon-based incremental checking system and multi-process parallel analysis to manage large codebases, supported by binary cache persi
mypy is the standard static type checker for Python, offering type inference, gradual typing, stub support, editor integration, and file-based configuration, which directly matches the need for static type analysis without execution.
Pytype is a static code analysis tool and type inference engine for Python. It functions as a static type analyzer that detects type mismatches and verifies type annotations without requiring full manual hinting, while also serving as a type stub generator for producing standalone definition files. The project distinguishes itself by automatically determining variable and function types through an analysis of code patterns and assignments. This inference engine allows for structural code verification and the generation of type stubs that describe the interfaces of modules and functions. The
Pytype is a full-featured static type checker for Python that combines automatic type inference, gradual typing, stub file generation, configurable rules, and integration-friendly error reporting, covering every aspect the visitor is looking for.
Pyright is a static type checker for Python designed to validate type hints and identify potential errors within large codebases. It functions as a command-line utility that integrates into local development environments and continuous integration pipelines to ensure code quality and consistency. The tool distinguishes itself through a high-performance analysis engine that utilizes incremental dependency graph analysis and persistent state caching to re-evaluate only the affected portions of a project. By implementing the Language Server Protocol, it provides real-time feedback, including err
Pyright is a dedicated static type checker for Python that uses fast incremental analysis, supports gradual typing and stub files, integrates with editors via the Language Server Protocol, and provides configurable error reporting—covering every feature this search asks for.
This project is a high-performance static type checker and comprehensive development toolkit for Python. It functions as a core analysis engine that identifies type inconsistencies and enforces code correctness, while simultaneously providing a language server implementation to deliver real-time diagnostics and intelligence directly within development environments. The tool distinguishes itself through a parallelized execution engine that maximizes performance across large-scale codebases and monorepo structures. It supports gradual type adoption, allowing developers to integrate type checkin
This is a high-performance static type checker for Python that also provides a language server for editor integration, supports gradual typing and file-based configuration, and delivers detailed error reports — matching all the key features you need for static analysis without running code.
Pyre is a high-performance static type checker and analysis tool for Python. It identifies type errors and ensures type safety without executing the program, utilizing a static type inference engine to maintain consistency across functions. The project is distinguished by an incremental type analysis engine that operates as a background daemon. This system monitors filesystem changes to re-validate only modified parts of a project, reducing the time required for repeated analysis. It also includes a static analysis security tool that uses taint analysis to track untrusted data flows and ident
Pyre is a dedicated Python static type checker with an incremental type inference engine, stub file support, and editor integration, covering all the required features for catching type errors without running the code.
Pyrefly is a static type checker for Python that operates as a language server, delivering real-time diagnostics, completions, and navigation in any editor supporting the Language Server Protocol. It also performs static tensor shape analysis, using symbolic dimension variables and arithmetic to verify shape consistency in deep learning models without runtime execution. Beyond core type checking, Pyrefly supports gradual adoption workflows: it can generate a baseline of known errors so only new issues are reported, migrate configuration from other type checkers, and automatically suppress exi
Pyrefly is a static type checker for Python that runs as a language server, providing real-time type diagnostics, inference, gradual typing, and editor integration via LSP—directly matching your need to catch type errors without execution.
Typeshed is a collection of static type definitions and stubs for the Python standard library and third-party packages. It serves as a standardized resource for static analyzers and integrated development environments to validate code correctness and provide type-based code completion without modifying the original source code of the libraries. The project focuses on the creation and maintenance of external type hint files that separate type annotations from runtime implementation. It utilizes a system for versioning and mapping these stubs to specific versions of runtime packages to maintain
typeshed is a collection of type stubs for Python libraries, not a type checker itself — it provides type definitions that tools like mypy or pyright use, but does not analyze your code or report type errors.
coc.nvim is a Node.js extension host and Language Server Protocol client that transforms Vim and Neovim into a full integrated development environment. It provides a framework for executing JavaScript and TypeScript plugins within a separate process to enable advanced IDE features without blocking the editor's main thread. The project is distinguished by its ability to host extensions and language servers through a centralized JSON configuration. It supports the installation and lifecycle management of third-party extensions from registries or local files, allowing users to customize language
coc.nvim is a Language Server Protocol client and editor extension host for Vim/Neovim, not a static type checker for Python—it can integrate with a type checker via LSP but does not itself perform type analysis or catch type errors.
lsp-mode is a Language Server Protocol client and IDE feature set for Emacs. It functions as a semantic code analysis tool and JSON-RPC communication layer that connects the editor to external language servers to provide intelligent code completion and real-time diagnostics. The project also serves as a Debug Adapter Protocol client, enabling interactive debugging sessions and breakpoint management. This allows for stepping through code and inspecting variables via a standardized protocol, including support for debugging within Docker containers. The system covers a broad range of developmen
This is an Emacs LSP client that connects to external language servers for code intelligence, not a static type checker itself; it can integrate with Python type checkers like pyright but does not perform type analysis on its own.
Pylint is a static code analysis tool for Python that checks source code for errors, coding standard violations, and code smells without executing the program. It parses code into an abstract syntax tree and walks the tree to detect issues, enforces configurable style rules and naming conventions, and identifies duplicate code blocks by comparing tokenised source sequences. The tool also includes an inference engine that deduces variable types by simulating code paths, enabling deeper analysis even in untyped code. What distinguishes Pylint is its plugin-based checker architecture, which allo
Pylint is a static code analysis and linting tool that includes some type inference, but its core purpose is catching style violations and code smells rather than dedicated static type checking for Python, so it doesn't fully match the search for a primary type checker like mypy or pyright.
vim-lsp is a Vim plugin that implements the Language Server Protocol to provide an asynchronous code intelligence tool for the editor. It serves as a bridge between Vim and external language servers, providing semantic code analysis and IDE-like navigation and diagnostics. The project provides a refactoring interface for renaming symbols across a workspace and applying quick-fixes. It also enables semantic highlighting, which color-codes elements based on their meaning as determined by the language server. The plugin covers a broad surface of capabilities, including symbol navigation and dis
vim-lsp is an editor plugin that connects Vim to external language servers via the Language Server Protocol, so it can surface type diagnostics from a separate Python type checker like pyright or mypy, but it does not itself perform any type analysis — you would still need to install a dedicated Python type checker alongside it.
Ale is a Neovim LSP client and asynchronous linter wrapper designed to integrate language servers and syntax checkers into the editor. It provides infrastructure for background syntax validation and automated code fixing without blocking the editor interface. The project implements the Language Server Protocol to enable advanced semantic navigation, including symbol renaming, definition jumping, and the application of automatic refactoring changes. It functions as an automatic code fixer that applies formatting and repairs based on feedback from linting tools and language servers. The plugin
ALE is an editor plugin that integrates linters and language servers, but it does not perform static type analysis itself—it delegates to external tools like mypy, so it is not a dedicated Python type checker.
| Repository | Stars | Language | License | Last push |
|---|---|---|---|---|
| python/mypy | 20.5K | Python | NOASSERTION | |
| google/pytype | 5K | Python | NOASSERTION | |
| microsoft/pyright | 15.2K | Python | other | |
| astral-sh/ty | 17.3K | Python | mit | |
| facebook/pyre-check | 7.2K | OCaml | MIT | |
| facebook/pyrefly | 5.4K | Rust | mit | |
| python/typeshed | 5.1K | Python | NOASSERTION | |
| neoclide/coc.nvim | 25.2K | TypeScript | NOASSERTION | |
| emacs-lsp/lsp-mode | 5.1K | Emacs Lisp | gpl-3.0 | |
| pycqa/pylint | 5.7K | Python | GPL-2.0 |