Skip to content

Commit

Permalink
bpo-39572: Document ’total’ flag of TypedDict (pythonGH-18554)
Browse files Browse the repository at this point in the history
  • Loading branch information
ananthan-123 authored Feb 19, 2020
1 parent a4ba8a3 commit ab6423f
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 3 deletions.
16 changes: 14 additions & 2 deletions Doc/library/typing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -996,8 +996,20 @@ The module defines the following classes, functions and decorators:
Point2D = TypedDict('Point2D', x=int, y=int, label=str)
Point2D = TypedDict('Point2D', {'x': int, 'y': int, 'label': str})

See :pep:`589` for more examples and detailed rules of using ``TypedDict``
with type checkers.
By default, all keys must be present in a TypedDict. It is possible
to override this by specifying totality.
Usage::

class point2D(TypedDict, total=False):
x: int
y: int

This means that a point2D TypedDict can have any of the keys omitted.A type
checker is only expected to support a literal False or True as the value of
the total argument. True is the default, and makes all items defined in the
class body be required.

See :pep:`589` for more examples and detailed rules of using ``TypedDict``.

.. versionadded:: 3.8

Expand Down
15 changes: 14 additions & 1 deletion Lib/typing.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
* Public helper functions: get_type_hints, overload, cast, no_type_check,
no_type_check_decorator.
* Generic aliases for collections.abc ABCs and few additional protocols.
* Special types: NewType, NamedTuple, TypedDict (may be added soon).
* Special types: NewType, NamedTuple, TypedDict.
* Wrapper submodules for re and io related types.
"""

Expand Down Expand Up @@ -1885,6 +1885,19 @@ class Point2D(TypedDict):
Point2D = TypedDict('Point2D', x=int, y=int, label=str)
Point2D = TypedDict('Point2D', {'x': int, 'y': int, 'label': str})
By default, all keys must be present in a TypedDict. It is possible
to override this by specifying totality.
Usage::
class point2D(TypedDict, total=False):
x: int
y: int
This means that a point2D TypedDict can have any of the keys omitted.A type
checker is only expected to support a literal False or True as the value of
the total argument. True is the default, and makes all items defined in the
class body be required.
The class syntax is only supported in Python 3.6+, while two other
syntax forms work for Python 2.7 and 3.2+
"""
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Updated documentation of ``total`` flag of TypeDict.

0 comments on commit ab6423f

Please sign in to comment.