Following system colour scheme Selected dark colour scheme Selected light colour scheme

Python Enhancement Proposals

Typing PEPs

Introduction

This is the index of all Python Enhancement Proposals (PEPs) labelled under the ‘Typing’ topic. This is a sub-index of PEP 0, the PEP index.

Many recent PEPs propose changes to Python’s static type system or otherwise relate to type annotations. They are listed here for reference.

Index by Category

Meta-PEPs (PEPs about PEPs or Processes)

PEP Title Authors
PA 729 Typing governance process Jelle Zijlstra, Shantanu Jain

Other Informational PEPs

PEP Title Authors
IF 482 Literature Overview for Type Hints Łukasz Langa
IF 483 The Theory of Type Hints Guido van Rossum, Ivan Levkivskyi

Accepted PEPs (accepted; may not be implemented yet)

PEP Title Authors
SA 563 Postponed Evaluation of Annotations Łukasz Langa 3.7
SA 646 Variadic Generics Mark Mendoza, Matthew Rahtz, Pradeep Kumar Srinivasan, Vincent Siles 3.11
SA 647 User-Defined Type Guards Eric Traut 3.10
SA 649 Deferred Evaluation Of Annotations Using Descriptors Larry Hastings 3.13
SA 696 Type Defaults for Type Parameters James Hilton-Balfe 3.13
SA 702 Marking deprecations using the type system Jelle Zijlstra 3.13
SA 705 TypedDict: Read-only items Alice Purcell 3.13

Open PEPs (under consideration)

PEP Title Authors
S 718 Subscriptable functions James Hilton-Balfe 3.13
S 727 Documentation in Annotated Metadata Sebastián Ramírez 3.13
S 728 TypedDict with Typed Extra Items Zixuan James Li 3.13
S 742 Narrowing types with TypeIs Jelle Zijlstra 3.13

Finished PEPs (done, with a stable interface)

PEP Title Authors
SF 484 Type Hints Guido van Rossum, Jukka Lehtosalo, Łukasz Langa 3.5
SF 526 Syntax for Variable Annotations Ryan Gonzalez, Philip House, Ivan Levkivskyi, Lisa Roach, Guido van Rossum 3.6
SF 544 Protocols: Structural subtyping (static duck typing) Ivan Levkivskyi, Jukka Lehtosalo, Łukasz Langa 3.8
SF 561 Distributing and Packaging Type Information Ethan Smith 3.7
SF 585 Type Hinting Generics In Standard Collections Łukasz Langa 3.9
SF 586 Literal Types Michael Lee, Ivan Levkivskyi, Jukka Lehtosalo 3.8
SF 589 TypedDict: Type Hints for Dictionaries with a Fixed Set of Keys Jukka Lehtosalo 3.8
SF 591 Adding a final qualifier to typing Michael J. Sullivan, Ivan Levkivskyi 3.8
SF 593 Flexible function and variable annotations Till Varoquaux, Konstantin Kashin 3.9
SF 604 Allow writing union types as X | Y Philippe PRADOS, Maggie Moss 3.10
SF 612 Parameter Specification Variables Mark Mendoza 3.10
SF 613 Explicit Type Aliases Shannon Zhu 3.10
SF 655 Marking individual TypedDict items as required or potentially-missing David Foster 3.11
SF 673 Self Type Pradeep Kumar Srinivasan, James Hilton-Balfe 3.11
SF 675 Arbitrary Literal String Type Pradeep Kumar Srinivasan, Graham Bleaney 3.11
SF 681 Data Class Transforms Erik De Bonte, Eric Traut 3.11
SF 688 Making the buffer protocol accessible in Python Jelle Zijlstra 3.12
SF 692 Using TypedDict for more precise **kwargs typing Franek Magiera 3.12
SF 695 Type Parameter Syntax Eric Traut 3.12
SF 698 Override Decorator for Static Typing Steven Troxler, Joshua Xu, Shannon Zhu 3.12

Abandoned, Withdrawn, and Rejected PEPs

PEP Title Authors
SR 677 Callable Type Syntax Steven Troxler, Pradeep Kumar Srinivasan 3.11
SW 724 Stricter Type Guards Rich Chiodo, Eric Traut, Erik De Bonte 3.13

Numerical Index

PEP Title Authors
IF 482 Literature Overview for Type Hints Łukasz Langa
IF 483 The Theory of Type Hints Guido van Rossum, Ivan Levkivskyi
SF 484 Type Hints Guido van Rossum, Jukka Lehtosalo, Łukasz Langa 3.5
SF 526 Syntax for Variable Annotations Ryan Gonzalez, Philip House, Ivan Levkivskyi, Lisa Roach, Guido van Rossum 3.6
SF 544 Protocols: Structural subtyping (static duck typing) Ivan Levkivskyi, Jukka Lehtosalo, Łukasz Langa 3.8
SF 561 Distributing and Packaging Type Information Ethan Smith 3.7
SA 563 Postponed Evaluation of Annotations Łukasz Langa 3.7
SF 585 Type Hinting Generics In Standard Collections Łukasz Langa 3.9
SF 586 Literal Types Michael Lee, Ivan Levkivskyi, Jukka Lehtosalo 3.8
SF 589 TypedDict: Type Hints for Dictionaries with a Fixed Set of Keys Jukka Lehtosalo 3.8
SF 591 Adding a final qualifier to typing Michael J. Sullivan, Ivan Levkivskyi 3.8
SF 593 Flexible function and variable annotations Till Varoquaux, Konstantin Kashin 3.9
SF 604 Allow writing union types as X | Y Philippe PRADOS, Maggie Moss 3.10
SF 612 Parameter Specification Variables Mark Mendoza 3.10
SF 613 Explicit Type Aliases Shannon Zhu 3.10
SA 646 Variadic Generics Mark Mendoza, Matthew Rahtz, Pradeep Kumar Srinivasan, Vincent Siles 3.11
SA 647 User-Defined Type Guards Eric Traut 3.10
SA 649 Deferred Evaluation Of Annotations Using Descriptors Larry Hastings 3.13
SF 655 Marking individual TypedDict items as required or potentially-missing David Foster 3.11
SF 673 Self Type Pradeep Kumar Srinivasan, James Hilton-Balfe 3.11
SF 675 Arbitrary Literal String Type Pradeep Kumar Srinivasan, Graham Bleaney 3.11
SR 677 Callable Type Syntax Steven Troxler, Pradeep Kumar Srinivasan 3.11
SF 681 Data Class Transforms Erik De Bonte, Eric Traut 3.11
SF 688 Making the buffer protocol accessible in Python Jelle Zijlstra 3.12
SF 692 Using TypedDict for more precise **kwargs typing Franek Magiera 3.12
SF 695 Type Parameter Syntax Eric Traut 3.12
SA 696 Type Defaults for Type Parameters James Hilton-Balfe 3.13
SF 698 Override Decorator for Static Typing Steven Troxler, Joshua Xu, Shannon Zhu 3.12
SA 702 Marking deprecations using the type system Jelle Zijlstra 3.13
SA 705 TypedDict: Read-only items Alice Purcell 3.13
S 718 Subscriptable functions James Hilton-Balfe 3.13
SW 724 Stricter Type Guards Rich Chiodo, Eric Traut, Erik De Bonte 3.13
S 727 Documentation in Annotated Metadata Sebastián Ramírez 3.13
S 728 TypedDict with Typed Extra Items Zixuan James Li 3.13
PA 729 Typing governance process Jelle Zijlstra, Shantanu Jain
S 742 Narrowing types with TypeIs Jelle Zijlstra 3.13

PEP Types Key

  • IInformational: Non-normative PEP containing background, guidelines or other information relevant to the Python ecosystem
  • PProcess: Normative PEP describing or proposing a change to a Python community process, workflow or governance
  • SStandards Track: Normative PEP with a new feature for Python, implementation change for CPython or interoperability standard for the ecosystem

More info in PEP 1.

PEP Status Key

  • AAccepted: Normative proposal accepted for implementation
  • AActive: Currently valid informational guidance, or an in-use process
  • DDeferred: Inactive draft that may be taken up again at a later time
  • <No letter>Draft: Proposal under active discussion and revision
  • FFinal: Accepted and implementation complete, or no longer active
  • PProvisional: Provisionally accepted but additional feedback needed
  • RRejected: Formally declined and will not be accepted
  • SSuperseded: Replaced by another succeeding PEP
  • WWithdrawn: Removed from consideration by sponsor or authors

More info in PEP 1.