Skip to content

Commit

Permalink
bpo-39572: Document ’total’ flag of TypedDict (GH-18554)
Browse files Browse the repository at this point in the history
(cherry picked from commit ab6423f)

Co-authored-by: ananthan-123 <ananthakrishnan15.2001@gmail.com>
  • Loading branch information
miss-islington and ananthan-123 committed Feb 19, 2020
1 parent d77e771 commit 44c6901
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

This comment has been minimized.

Copy link
@brettcannon

brettcannon Feb 27, 2020

Member

Looks like a space is missing after the period (both here and in the docstring).

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 @@ -1779,6 +1779,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 44c6901

Please sign in to comment.