Skip to content
85

Awesome Python Typing

Collection of awesome Python types, stubs, plugins, and tools to work with them.

2k stars78 forks133 entriesLast push Sep 23, 2026 (6 days ago)License CC-BY-SA-4.0

This page lists names, links and short descriptions. The original list on GitHub is the source and belongs to its authors.

Static type checkers

basedmypy

Based static typing with baseline functionality.

basedpyright

Pyright fork with improvements to VSCode support and various other fixes.

mypy

Optional static typing (PEP 484).

In 6 listsDetails

pyanalyze

Extensible static analyzer and type checker.

PyCharm

IDE for Professional Developers.

In 6 listsDetails

pylyzer

A fast static code analyzer & language server for Python, written in Rust.

pyrefly

A fast type checker and language server for Python.

In 3 lists

pyright

Fast type checker meant for large Python source bases. It can run in a “watch” mode and performs fast incremental updates when files are modified.

In 6 listsDetails

pycroscope

A semi-static type checker for Python code. It imports the modules it type checks, enabling pycroscope to understand many dynamic constructs that other type checkers will reject. This makes it possible to extend pycroscope with plugins that interact directly with your code.

pytype

Tool to check and infer types - without requiring type annotations.

In 4 lists

ty

An extremely fast Python type checker, written in Rust, from the creators of Ruff and uv.

In 3 lists

zuban

A Mypy-compatible Python type checker and Language Server built in Rust.

Dynamic type checkers

beartype

Unbearably fast O(1) runtime type-checking in pure Python.

In 3 lists

pydantic

Data parsing using Python type hinting. Supports dataclasses.

In 2 lists

pytypes

Provides a rich set of utilities for runtime typechecking.

strongtyping

Decorator which checks whether the function is called with the correct type of parameters.

typedpy

Type-safe, strict Python. Works well with standard Python.

typeguard

Another one runtime type checker.

typical

Data parsing and automatic type-coercion using type hinting. Supports dataclasses, standard classes, function signatures, and more.

trycast

Parse JSON-like values whose shape is defined by typed dictionaries (TypedDicts) and other standard Python type hints.

type_enforced

Fast runtime type enforcement for annotations with no dependencies. Includes fast O(1) and full O(n) operations.

Stub packages

asgiref

ASGI specification, provides asgiref.typing module with type annotations for ASGI servers.

In 3 lists

boto3-stubs

Stubs for boto3.

botostubs

Gives you code assistance for any boto3 API in any IDE.

celery-types

Type stubs for Celery and its related packages django-celery-results, ampq, kombu, billiard, vine and ephem.

django-stubs

Stubs for Django.

djangorestframework-stubs

Stubs for DRF.

grpc-stubs

Stubs for grpc.

lxml-stubs

Stubs for lxml.

PyQt5-stubs

Stubs for PyQt5.

python-phonenumbers-stubs

Stubs for phonenumbers.

pythonista-stubs

Stubs for Pythonista.

scipy-stubs

Stubs for SciPy.

sqlalchemy-stubs

Stubs for SQLAlchemy.

sqlalchemy2-stubs

Official stubs and mypy plugin for SQLAlchemy.

torchtyping

Enhanced type annotations for PyTorch.

types-aiobotocore

Stubs for aiobotocore.

typeshed

Collection of library stubs, with static types.

In 2 lists

Additional types

meiga

Simple, typed and monad-based Result type.

In 2 lists

option

Rust like Option and Result types.

In 2 lists

optype

Opinionated collections.abc and operators alternative: Flexible single-method protocols and typed operators with predictable names.

phantom-types

Phantom types.

returns

Make your functions return something meaningful, typed, and safe.

In 5 listsDetails

safetywrap

Fully typesafe, Rust-like Result and Option types.

In 2 lists

typet

Length-bounded types, dynamic object validation.

useful-types

Collection of useful protocols and type aliases.

Backports and improvements

future-typing

Backport for type hinting generics in standard collections and union types as X | Y.

typing-extensions

Backported and experimental type hints.

typing-utils

Backport 3.8+ runtime typing utils(for eg: get_origin) & add issubtype & more.

Tools >Linters

flake8-annotations-complexity

Plugin for flake8 to validate annotations complexity.

In 2 lists

flake8-annotations

Plugin for flake8 to check for presence of type annotations in function definitions.

In 2 lists

flake8-pyi

Plugin for Flake8 that provides specializations for type hinting stub files.

flake8-type-checking

Plugin to help you guard any type-annotation-only import correctly.

In 2 lists

flake8-typing-imports

Plugin which checks that typing imports are properly guarded.

In 2 lists

flake8-typing-only-imports

flake8 plugin that helps identify which imports to put into type-checking blocks, and how to adjust your type annotations once imports are moved.

flake8-type-ignore

flake8 plugin to disallow type: ignore comments in your typed Python code.

wemake-python-styleguide

The strictest and most opinionated Python linter ever.

In 5 listsDetails

Ruff

Extremely fast linter which supports lint rules from many other lint tools, such as flake8.

In 4 listsDetails

Tools >Testing

mypy-test

Test mypy plugins, stubs, custom types.

pytest-mypy-plugins

Pytest plugin for testing mypy types, stubs, and plugins.

pytest-mypy-testing

Pytest plugin to test mypy static type analysis.

pytest-mypy

Mypy static type checker plugin for Pytest.

Tools >Working with types

com2ann

Tool for translation of type comments to type annotations.

pytype

Tool to check and infer types - without requiring type annotations.

In 4 lists

mypy-baseline

Integrate mypy with existing codebase. A CLI tool that filters out existing type errors and reports only new ones.

mypy-protobuf

Tool to generate mypy stubs from protobufs.

mypy-silent

Silence mypy by adding or removing code comments.

mypy

Optional static typing (PEP 484).

In 6 listsDetails

retype

Another tool to apply stubs to code.

typeforce

CLI tool that enriches your Python environment with type annotations, empowering mypy.

typesplainer

A Python type explainer.

typing-inspect

The typing_inspect module defines experimental API for runtime inspection of types defined in the typing module.

typing-json

Lib for working with typed objects and JSON.

Tools >Helper tools to add annotations to existing code

autotyping

Automatically add simple return type annotations for functions (bool, None, Optional).

infer-types

CLI tool to automatically infer and add type annotations into Python code.

jsonschema-gentypes

Generate Python types based on TypedDict from a JSON Schema.

monkeytype

Collects runtime types of function arguments and return values, and can automatically generate stub files or even add draft type annotations directly to your code based on the types collected at runtime.

In 3 lists

no_implicit_optional

A codemod to make your implicit optional type hints PEP 484 compliant.

pyannotate

Insert annotations into your source code based on call arguments and return types observed at runtime.

PyTypes

Infer Types by Python Tracing.

pytest-annotate

Pyannotate plugin for pytest.

pytest-monkeytype

MonkeyType plugin for pytest.

pytype

Tool to check and infer types - without requiring type annotations.

In 4 lists

RightTyper

A tool that generates types for your function arguments and return values. RightTyper lets your code run at nearly full speed with almost no memory overhead.

auto-optional

Makes typed arguments Optional when the default argument is None.

Tools >Mypy plugins

kubernetes-typed

Plugin for Kubernetes CRD type checking.

loguru-mypy

Plugin for loguru support.

mypy-zope

Plugin for zope.interface support.

mypy

Optional static typing (PEP 484).

In 6 listsDetails

NumPy

Plugin for NumPy support.

pynamodb-mypy

Plugin for PynamoDB support.

pydantic

Plugin for additional Pydantic support.

Integrations

emacs-flycheck-mypy

Mypy integration for Emacs.

mypy-playground

Online playground for mypy.

mypy-pycharm-plugin

Mypy integration for PyCharm.

pylance

PyRight integration for VSCode.

vim-mypy

Mypy integration for Vim.

nbQA

Run type checkers (e.g. Mypy) on Jupyter Notebooks.

In 2 lists

Articles >PEPs

PEP-3107

Function Annotations.

PEP-482

Literature Overview for Type Hints.

PEP-483

The Theory of Type Hints.

PEP-484

Type Hints.

PEP-526

Syntax for Variable Annotations.

PEP-544

Protocols: Structural subtyping (static duck typing).

PEP-557

Data Classes.

PEP-560

Core support for typing module and generic types.

PEP-561

Distributing and Packaging Type Information.

PEP-563

Postponed Evaluation of Annotations.

PEP-585

Type Hinting Generics In Standard Collections.

PEP-586

Literal Types.

PEP-589

TypedDict: Type Hints for Dictionaries with a Fixed Set of Keys.

PEP-591

Adding a final qualifier to typing.

PEP-593

Flexible function and variable annotations.

PEP-604

Complementary syntax for Union[].

PEP-612

Parameter Specification Variables.

PEP-613

Explicit Type Aliases.

Articles >Third-party articles

1-minute guide to real constants in Python

Full tutorial about Final constants and inheritance.

Simple dependent types in Python

Full tutorial about Literal types.

In 2 lists

Testing mypy stubs, plugins, and types

Full tutorial about testing mypy types.

Our journey to type checking 4 million lines of Python

Dropbox has been one of the first companies to adopt Python static type checking at this scale.

PyTest MonkeyType Introduction

Type Annotate an existing Python Django Codebase with MonkeyType.

The state of type hints in Python

As of May 2018.

Type hints cheat sheet

Cheat sheet on writing type annotations by MyPy team.

Typechecking Django and DRF

Full tutorial about type-checking Django.

Type Check Your Django Application

An article based on two recent talks on adding type checks to Django.

typing

Official Python documentation for typing module.

Python-typing-koans

A set of examples to learn optional static typing in Python.

Python Type Checking (Guide)

In this guide, you will get a look into Python type checking.

Adding type hints to urllib3

Tests are not enough: Case study adding type hints to urllib3.

Adam Johnsons Blog

Adam Johnson blogs about typing practices.

ParamSpec Guide

Newly released feature in PEP612 allows you do a lot of advanced typing things with functions and their signatures.

Static Typing Python Decorators

Accurately static typing decorators in Python is an icky business. The wrapper function obfuscates type information required to statically determine the types of the parameters and the return values of the wrapped function.

How do mypy, Pyright, and ty compare?

A detailed comparison of the three major Python static type checkers covering features, performance, and trade-offs.

ty: A Complete Guide

Comprehensive guide to ty, the fast Python type checker from Astral.

awesome-python

Curated list of awesome Python frameworks, libraries, software and resources.

In 15 listsDetails

Python Developer Tooling Handbook

Comprehensive handbook covering Python type checkers, linters, and development tools with reference pages for mypy, Pyright, and ty.

In 2 lists

python-typecheckers

List of Python type checkers: static and runtime.

See category
94

Awesome Rust

rust-unofficial/awesome-rust

A curated list of Rust code and resources.

Fresh★ 60k1833 entriesPushed today
94

Awesome Mac

jaywcjlove/awesome-mac

 This project is dedicated to collecting high-quality macOS software and organizing them systematically by different categories for easy search and use.

Fresh★ 115k1316 entriesPushed today
94

Awesome Python

vinta/awesome-python

The definitive list that answers "I want to do X in Python, which tool should I use?"

Fresh★ 324k504 entriesPushed today
94

Awesome C++

fffaraz/awesome-cpp

A curated list of awesome C++ (or C) frameworks, libraries, resources, and shiny things. Inspired by awesome-... stuff.

Fresh★ 74k1358 entriesPushed yesterday
94

Awesome Go

avelino/awesome-go

A curated list of awesome Go frameworks, libraries and software

Fresh★ 186k3119 entriesPushed yesterday
94

Awesome PHP

ziadoz/awesome-php

A curated list of amazingly awesome PHP libraries, resources and shiny things.

Fresh★ 33k87 entriesPushed 2 days ago