Meta-topics

About this specification

This document was created following the acceptance ofPEP 729to serve as a specification for the Python type system. Theinitial text consists of the “Specification” sections ofPEP 484and subsequent typing-related PEPs, pasted together and reorganized.This creates a document that encompasses all aspects of the typesystem that have been specified in PEPs, but not necessarily acoherent whole. The hope is that incremental improvements willbe made to this document to make it more coherent and complete.

Changing the specification

Changes to the specification come in three kinds:

  • Minor, non-substantive changes can simply be proposed as PRs tothepython/typing repository,and may be merged by anyone with commit access. Such changes mayinclude formatting fixes, linking improvements, etc.

  • Substantive changes that do not rise to the level of a PEP mustbe approved by the Typing Council. The procedure is described below.

  • Major changes should go through the PEP process, as described inPEP 1. What counts as a major change is not precisely defined,but it would generally include any change of a similar magnitudetoprevious typing PEPs.

Changes that need Typing Council approval go through three steps:

The Typing Council haspublishedsome guidance on useful information to gather when proposing a changeto the spec, including:

  • A survey of the current behavior of major type checkers.

  • A rationale for why the proposed behavior is better than alternatives.

  • An implementation or proposed implementation of the proposed behaviorin at least one major type checker.