Getting started
|
interne |
jus Passer |
Type hints cheat sheet
|
interne |
jus Passer |
Using mypy with an existing codebase
|
interne |
jus Passer |
Built-in types
|
interne |
jus Passer |
Type inference and type annotations
|
interne |
jus Passer |
Kinds of types
|
interne |
jus Passer |
Class basics
|
interne |
jus Passer |
Annotation issues at runtime
|
interne |
jus Passer |
Protocols and structural subtyping
|
interne |
jus Passer |
Dynamically typed code
|
interne |
jus Passer |
Type narrowing
|
interne |
jus Passer |
Duck type compatibility
|
interne |
jus Passer |
Stub files
|
interne |
jus Passer |
Generics
|
interne |
jus Passer |
More types
|
interne |
jus Passer |
Literal types and Enums
|
interne |
jus Passer |
TypedDict
|
interne |
jus Passer |
Final names, methods and classes
|
interne |
jus Passer |
Metaclasses
|
interne |
jus Passer |
Running mypy and managing imports
|
interne |
jus Passer |
The mypy command line
|
interne |
jus Passer |
The mypy configuration file
|
interne |
jus Passer |
Inline configuration
|
interne |
jus Passer |
Mypy daemon (mypy server)
|
interne |
jus Passer |
Using installed packages
|
interne |
jus Passer |
Extending and integrating mypy
|
interne |
jus Passer |
Automatic stub generation (stubgen)
|
interne |
jus Passer |
Automatic stub testing (stubtest)
|
interne |
jus Passer |
Common issues and solutions
|
interne |
jus Passer |
Supported Python features
|
interne |
jus Passer |
Error codes
|
interne |
jus Passer |
Error codes enabled by default
|
interne |
jus Passer |
Error codes for optional checks
|
interne |
jus Passer |
Additional features
|
interne |
jus Passer |
Frequently Asked Questions
|
interne |
jus Passer |
GitHub
|
externe |
jus Passer |
Website
|
externe |
jus Passer |
latest
|
interne |
jus Passer |
stable
|
interne |
jus Passer |
pdf
|
interne |
jus Passer |
html
|
interne |
jus Passer |
epub
|
interne |
jus Passer |
Project Home
|
interne |
jus Passer |
Builds
|
interne |
jus Passer |
¶
|
interne |
jus Passer |
¶
|
interne |
jus Passer |
Installing and running mypy
|
interne |
jus Passer |
Dynamic vs static typing
|
interne |
jus Passer |
Strict mode and configuration
|
interne |
jus Passer |
More complex types
|
interne |
jus Passer |
Local type inference
|
interne |
jus Passer |
Types from libraries
|
interne |
jus Passer |
Next steps
|
interne |
jus Passer |
Variables
|
interne |
jus Passer |
Useful built-in types
|
interne |
jus Passer |
Functions
|
interne |
jus Passer |
Classes
|
interne |
jus Passer |
When you’re puzzled or when things are complicated
|
interne |
jus Passer |
Standard “duck types”
|
interne |
jus Passer |
Forward references
|
interne |
jus Passer |
Decorators
|
interne |
jus Passer |
Coroutines and asyncio
|
interne |
jus Passer |
Start small
|
interne |
jus Passer |
Run mypy consistently and prevent regressions
|
interne |
jus Passer |
Ignoring errors from certain modules
|
interne |
jus Passer |
Fixing errors related to imports
|
interne |
jus Passer |
Prioritise annotating widely imported modules
|
interne |
jus Passer |
Write annotations as you go
|
interne |
jus Passer |
Automate annotation of legacy code
|
interne |
jus Passer |
Introduce stricter options
|
interne |
jus Passer |
Speed up mypy runs
|
interne |
jus Passer |
Simple types
|
interne |
jus Passer |
Any type
|
interne |
jus Passer |
Generic types
|
interne |
jus Passer |
Type inference
|
interne |
jus Passer |
Explicit types for variables
|
interne |
jus Passer |
Explicit types for collections
|
interne |
jus Passer |
Compatibility of container types
|
interne |
jus Passer |
Context in type inference
|
interne |
jus Passer |
Silencing type errors
|
interne |
jus Passer |
Class types
|
interne |
jus Passer |
The Any type
|
interne |
jus Passer |
Tuple types
|
interne |
jus Passer |
Callable types (and lambdas)
|
interne |
jus Passer |
Union types
|
interne |
jus Passer |
Optional types and the None type
|
interne |
jus Passer |
Type aliases
|
interne |
jus Passer |
Named tuples
|
interne |
jus Passer |
The type of class objects
|
interne |
jus Passer |
Generators
|
interne |
jus Passer |
Instance and class attributes
|
interne |
jus Passer |
Annotating __init__ methods
|
interne |
jus Passer |
Class attribute annotations
|
interne |
jus Passer |
Overriding statically typed methods
|
interne |
jus Passer |
Abstract base classes and multiple inheritance
|
interne |
jus Passer |
Slots
|
interne |
jus Passer |
String literal types and type comments
|
interne |
jus Passer |
Future annotations import (PEP 563)
|
interne |
jus Passer |
typing.TYPE_CHECKING
|
interne |
jus Passer |
Class name forward references
|
interne |
jus Passer |
Import cycles
|
interne |
jus Passer |
Using classes that are generic in stubs but not at runtime
|
interne |
jus Passer |
Using types defined in stubs but not at runtime
|
interne |
jus Passer |
Using generic builtins
|
interne |
jus Passer |
Using X | Y syntax for Unions
|
interne |
jus Passer |
Using new additions to the typing module
|
interne |
jus Passer |
Predefined protocols
|
interne |
jus Passer |
Simple user-defined protocols
|
interne |
jus Passer |
Defining subprotocols and subclassing protocols
|
interne |
jus Passer |
Invariance of protocol attributes
|
interne |
jus Passer |
Recursive protocols
|
interne |
jus Passer |
Using isinstance() with protocols
|
interne |
jus Passer |
Callback protocols
|
interne |
jus Passer |
Predefined protocol reference
|
interne |
jus Passer |
Operations on Any values
|
interne |
jus Passer |
Any vs. object
|
interne |
jus Passer |
Type narrowing expressions
|
interne |
jus Passer |
Casts
|
interne |
jus Passer |
User-Defined Type Guards
|
interne |
jus Passer |
Limitations
|
interne |
jus Passer |
Creating a stub
|
interne |
jus Passer |
Stub file syntax
|
interne |
jus Passer |
Using stub file syntax at runtime
|
interne |
jus Passer |
Defining generic classes
|
interne |
jus Passer |
Defining subclasses of generic classes
|
interne |
jus Passer |
Generic functions
|
interne |
jus Passer |
Generic methods and generic self
|
interne |
jus Passer |
Automatic self types using typing.Self
|
interne |
jus Passer |
Variance of generic types
|
interne |
jus Passer |
Type variables with upper bounds
|
interne |
jus Passer |
Type variables with value restriction
|
interne |
jus Passer |
Declaring decorators
|
interne |
jus Passer |
Generic protocols
|
interne |
jus Passer |
Generic type aliases
|
interne |
jus Passer |
Generic class internals
|
interne |
jus Passer |
The NoReturn type
|
interne |
jus Passer |
NewTypes
|
interne |
jus Passer |
Function overloading
|
interne |
jus Passer |
Advanced uses of self-types
|
interne |
jus Passer |
Typing async/await
|
interne |
jus Passer |
Literal types
|
interne |
jus Passer |
Enums
|
interne |
jus Passer |
Totality
|
interne |
jus Passer |
Supported operations
|
interne |
jus Passer |
Class-based syntax
|
interne |
jus Passer |
Mixing required and non-required items
|
interne |
jus Passer |
Unions of TypedDicts
|
interne |
jus Passer |
Final names
|
interne |
jus Passer |
Final methods
|
interne |
jus Passer |
Final classes
|
interne |
jus Passer |
Defining a metaclass
|
interne |
jus Passer |
Metaclass usage example
|
interne |
jus Passer |
Gotchas and limitations of metaclass support
|
interne |
jus Passer |
Specifying code to be checked
|
interne |
jus Passer |
Reading a list of files from a file
|
interne |
jus Passer |
Mapping file paths to modules
|
interne |
jus Passer |
How mypy handles imports
|
interne |
jus Passer |
Missing imports
|
interne |
jus Passer |
How imports are found
|
interne |
jus Passer |
Following imports
|
interne |
jus Passer |
Specifying what to type check
|
interne |
jus Passer |
Optional arguments
|
interne |
jus Passer |
Config file
|
interne |
jus Passer |
Import discovery
|
interne |
jus Passer |
Platform configuration
|
interne |
jus Passer |
Disallow dynamic typing
|
interne |
jus Passer |
Untyped definitions and calls
|
interne |
jus Passer |
None and Optional handling
|
interne |
jus Passer |
Configuring warnings
|
interne |
jus Passer |
Miscellaneous strictness flags
|
interne |
jus Passer |
Configuring error messages
|
interne |
jus Passer |
Incremental mode
|
interne |
jus Passer |
Advanced options
|
interne |
jus Passer |
Report generation
|
interne |
jus Passer |
Enabling incomplete/experimental features
|
interne |
jus Passer |
Miscellaneous
|
interne |
jus Passer |
Config file format
|
interne |
jus Passer |
Per-module and global options
|
interne |
jus Passer |
Inverting option values
|
interne |
jus Passer |
Import discovery
|
interne |
jus Passer |
Platform configuration
|
interne |
jus Passer |
Disallow dynamic typing
|
interne |
jus Passer |
Untyped definitions and calls
|
interne |
jus Passer |
None and Optional handling
|
interne |
jus Passer |
Configuring warnings
|
interne |
jus Passer |
Suppressing errors
|
interne |
jus Passer |
Miscellaneous strictness flags
|
interne |
jus Passer |
Configuring error messages
|
interne |
jus Passer |
Incremental mode
|
interne |
jus Passer |
Advanced options
|
interne |
jus Passer |
Report generation
|
interne |
jus Passer |
Miscellaneous
|
interne |
jus Passer |
Using a pyproject.toml file
|
interne |
jus Passer |
Configuration comment format
|
interne |
jus Passer |
Basic usage
|
interne |
jus Passer |
Daemon client commands
|
interne |
jus Passer |
Additional daemon flags
|
interne |
jus Passer |
Static inference of annotations
|
interne |
jus Passer |
Statically inspect expressions
|
interne |
jus Passer |
Using installed packages with mypy (PEP 561)
|
interne |
jus Passer |
Creating PEP 561 compatible packages
|
interne |
jus Passer |
Integrating mypy into another Python application
|
interne |
jus Passer |
Extending mypy using plugins
|
interne |
jus Passer |
Configuring mypy to use plugins
|
interne |
jus Passer |
High-level overview
|
interne |
jus Passer |
Current list of plugin hooks
|
interne |
jus Passer |
Useful tools
|
interne |
jus Passer |
Specifying what to stub
|
interne |
jus Passer |
Specifying how to generate stubs
|
interne |
jus Passer |
Additional flags
|
interne |
jus Passer |
What stubtest does and does not do
|
interne |
jus Passer |
Example
|
interne |
jus Passer |
Usage
|
interne |
jus Passer |
No errors reported for obviously wrong code
|
interne |
jus Passer |
Spurious errors and locally silencing the checker
|
interne |
jus Passer |
Ignoring a whole file
|
interne |
jus Passer |
Issues with code at runtime
|
interne |
jus Passer |
Mypy runs are slow
|
interne |
jus Passer |
Types of empty collections
|
interne |
jus Passer |
Redefinitions with incompatible types
|
interne |
jus Passer |
Invariance vs covariance
|
interne |
jus Passer |
Declaring a supertype as variable type
|
interne |
jus Passer |
Complex type tests
|
interne |
jus Passer |
Python version and system platform checks
|
interne |
jus Passer |
Displaying the type of an expression
|
interne |
jus Passer |
Silencing linters
|
interne |
jus Passer |
Covariant subtyping of mutable protocol members is rejected
|
interne |
jus Passer |
Dealing with conflicting names
|
interne |
jus Passer |
Using a development mypy build
|
interne |
jus Passer |
Variables vs type aliases
|
interne |
jus Passer |
Incompatible overrides
|
interne |
jus Passer |
Unreachable code
|
interne |
jus Passer |
Narrowing and inner functions
|
interne |
jus Passer |
Runtime definition of methods and functions
|
interne |
jus Passer |
Silencing errors based on error codes
|
interne |
jus Passer |
Enabling/disabling specific error codes globally
|
interne |
jus Passer |
Per-module enabling/disabling error codes
|
interne |
jus Passer |
Subcodes of error codes
|
interne |
jus Passer |
Requiring error codes
|
interne |
jus Passer |
Check that attribute exists [attr-defined]
|
interne |
jus Passer |
Check that attribute exists in each union item [union-attr]
|
interne |
jus Passer |
Check that name is defined [name-defined]
|
interne |
jus Passer |
Check that a variable is not used before it’s defined [used-before-def]
|
interne |
jus Passer |
Check arguments in calls [call-arg]
|
interne |
jus Passer |
Check argument types [arg-type]
|
interne |
jus Passer |
Check calls to overloaded functions [call-overload]
|
interne |
jus Passer |
Check validity of types [valid-type]
|
interne |
jus Passer |
Require annotation if variable type is unclear [var-annotated]
|
interne |
jus Passer |
Check validity of overrides [override]
|
interne |
jus Passer |
Check that function returns a value [return]
|
interne |
jus Passer |
Check that functions don’t have empty bodies outside stubs [empty-body]
|
interne |
jus Passer |
Check that return value is compatible [return-value]
|
interne |
jus Passer |
Check types in assignment statement [assignment]
|
interne |
jus Passer |
Check that assignment target is not a method [method-assign]
|
interne |
jus Passer |
Check type variable values [type-var]
|
interne |
jus Passer |
Check uses of various operators [operator]
|
interne |
jus Passer |
Check indexing operations [index]
|
interne |
jus Passer |
Check list items [list-item]
|
interne |
jus Passer |
Check dict items [dict-item]
|
interne |
jus Passer |
Check TypedDict items [typeddict-item]
|
interne |
jus Passer |
Check TypedDict Keys [typeddict-unknown-key]
|
interne |
jus Passer |
Check that type of target is known [has-type]
|
interne |
jus Passer |
Check for an issue with imports [import]
|
interne |
jus Passer |
Check that import target can be found [import-not-found]
|
interne |
jus Passer |
Check that import target can be found [import-untyped]
|
interne |
jus Passer |
Check that each name is defined once [no-redef]
|
interne |
jus Passer |
Check that called function returns a value [func-returns-value]
|
interne |
jus Passer |
Check instantiation of abstract classes [abstract]
|
interne |
jus Passer |
Safe handling of abstract type object types [type-abstract]
|
interne |
jus Passer |
Check that call to an abstract method via super is valid [safe-super]
|
interne |
jus Passer |
Check the target of NewType [valid-newtype]
|
interne |
jus Passer |
Check the return type of __exit__ [exit-return]
|
interne |
jus Passer |
Check that naming is consistent [name-match]
|
interne |
jus Passer |
Check that literal is used where expected [literal-required]
|
interne |
jus Passer |
Check that overloaded functions have an implementation [no-overload-impl]
|
interne |
jus Passer |
Check that coroutine return value is used [unused-coroutine]
|
interne |
jus Passer |
Warn about top level await expressions [top-level-await]
|
interne |
jus Passer |
Warn about await expressions used outside of coroutines [await-not-async]
|
interne |
jus Passer |
Check types in assert_type [assert-type]
|
interne |
jus Passer |
Check that function isn’t used in boolean context [truthy-function]
|
interne |
jus Passer |
Check that string formatting/interpolation is type-safe [str-format]
|
interne |
jus Passer |
Check for implicit bytes coercions [str-bytes-safe]
|
interne |
jus Passer |
Check that overloaded functions don’t overlap [overload-overlap]
|
interne |
jus Passer |
Notify about an annotation in an unchecked function [annotation-unchecked]
|
interne |
jus Passer |
Report syntax errors [syntax]
|
interne |
jus Passer |
Miscellaneous checks [misc]
|
interne |
jus Passer |
Check that type arguments exist [type-arg]
|
interne |
jus Passer |
Check that every function has an annotation [no-untyped-def]
|
interne |
jus Passer |
Check that cast is not redundant [redundant-cast]
|
interne |
jus Passer |
Check that methods do not have redundant Self annotations [redundant-self]
|
interne |
jus Passer |
Check that comparisons are overlapping [comparison-overlap]
|
interne |
jus Passer |
Check that no untyped functions are called [no-untyped-call]
|
interne |
jus Passer |
Check that function does not return Any value [no-any-return]
|
interne |
jus Passer |
Check that types have no Any components due to missing imports [no-any-unimported]
|
interne |
jus Passer |
Check that statement or expression is unreachable [unreachable]
|
interne |
jus Passer |
Check that expression is redundant [redundant-expr]
|
interne |
jus Passer |
Warn about variables that are defined only in some execution paths [possibly-undefined]
|
interne |
jus Passer |
Check that expression is not implicitly true in boolean context [truthy-bool]
|
interne |
jus Passer |
Check that iterable is not implicitly true in boolean context [truthy-iterable]
|
interne |
jus Passer |
Check that awaitable return value is used [unused-awaitable]
|
interne |
jus Passer |
Check that overrides of mutable attributes are safe [mutable-override]
|
interne |
jus Passer |
Dataclasses
|
interne |
jus Passer |
Data Class Transforms
|
interne |
jus Passer |
The attrs package
|
interne |
jus Passer |
Using a remote cache to speed up mypy runs
|
interne |
jus Passer |
Extended Callable types
|
interne |
jus Passer |
Why have both dynamic and static typing?
|
interne |
jus Passer |
Would my project benefit from static typing?
|
interne |
jus Passer |
Can I use mypy to type check my existing Python code?
|
interne |
jus Passer |
Will static typing make my programs run faster?
|
interne |
jus Passer |
Is mypy free?
|
interne |
jus Passer |
Can I use duck typing with mypy?
|
interne |
jus Passer |
I like Python and I have no need for static typing
|
interne |
jus Passer |
How are mypy programs different from normal Python?
|
interne |
jus Passer |
How is mypy different from Cython?
|
interne |
jus Passer |
Does it run on PyPy?
|
interne |
jus Passer |
Mypy is a cool project. Can I help?
|
interne |
jus Passer |
¶
|
interne |
jus Passer |
Sphinx
|
externe |
jus Passer |
@pradyunsg
|
externe |
jus Passer |
Furo
|
externe |
jus Passer |
Welcome to mypy documentation!
|
interne |
jus Passer |