Awesome Lists

awesome-python-typing

by typeddjango

awesome listpushed about 2 years ago

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

AI summary

Type checker

A collection of tools and libraries for Python type checking and static analysis.

stars
1.7K
forks
69
watching
48
awesome lists
4
entries
134
View on GitHubgithub.com/typeddjango

Embed the badge

Show how many awesome lists link to your project. The count updates automatically.

Awesome Lists badge
Markdown
[![Awesome Lists Badge](https://awesome.facts.dev/shield/typeddjango/awesome-python-typing/links.svg)](https://awesome.facts.dev/awesome/typeddjango/awesome-python-typing)
HTML
<a href="https://awesome.facts.dev/awesome/typeddjango/awesome-python-typing"><img src="https://awesome.facts.dev/shield/typeddjango/awesome-python-typing/links.svg" alt="Awesome Lists Badge" /></a>
Image URL
https://awesome.facts.dev/shield/typeddjango/awesome-python-typing/links.svg

What's in the list

134 links in 15 sections, with live GitHub stats.activeno commit in 2y

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)

  • pyanalyze

    Extensible static analyzer and type checker

  • pycharm

    IDE for Professional Developers

  • pylyzer

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

  • pyre

    Performant type-checker

  • 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

  • pytype

    Tool to check and infer types - without requiring type annotations

Dynamic type checkers

  • beartype

    Unbearably fast runtime type-checking in pure Python

  • pydantic

    Data parsing using Python type hinting. Supports dataclasses

  • 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

Stub packages

Additional types

  • meiga

    Simple, typed and monad-based Result type

  • option

    Rust like Option and Result types

  • optype

    Opinionated and 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

  • safetywrap

    Fully typesafe, Rust-like Result and Option types

  • 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

  • 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

  • flake8-annotations

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

  • 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

  • flake8-typing-imports

    Plugin which checks that typing imports are properly guarded

  • 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

  • Ruff

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

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

  • merge-pyi

    Part of pytype toolchain, applies stub files onto source code

  • 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

  • mypyc

    Compiles mypy-annotated, statically typed Python modules into CPython C extensions

  • 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 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

  • no_implicit_optional

    A codemod to make your implicit optional type hints compliant

  • pyannotate

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

  • PyTypes

    Infer Types by Python Tracing

  • pyre infer

    Pyre has a powerful feature for migrating codebases to a typed format. The command-line option ingests a file or directory, makes educated guesses about the types used, and applies the annotations to the files

  • pytest-annotate

    Pyannotate plugin for pytest

  • pytest-monkeytype

    MonkeyType plugin for pytest

  • pytype annotate-ast

    A work-in-progress tool to annotate the nodes of an AST with their Python types

  • type4py

    Deep Similarity Learning-Based Type Inference

  • typilus

    A deep learning algorithm for predicting types in Python. Also available as a

  • auto-optional

    Makes typed arguments Optional when the default argument is

Tools / Mypy plugins

Integrations

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

Communities

  • awesome-python

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

  • python-typecheckers

    List of Python type checkers: static and runtime

More related projects

Add a GitHub project

Missing a project or an awesome list? Paste its GitHub URL and we fetch it right away.