summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Doc/library/typing.rst16
-rw-r--r--Lib/typing.py15
-rw-r--r--Misc/NEWS.d/next/Documentation/2020-02-18-18-37-07.bpo-39572.CCtzy1.rst1
3 files changed, 29 insertions, 3 deletions
diff --git a/Doc/library/typing.rst b/Doc/library/typing.rst
index d3bab94..eac75ee 100644
--- a/Doc/library/typing.rst
+++ b/Doc/library/typing.rst
@@ -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
diff --git a/Lib/typing.py b/Lib/typing.py
index 6da145f..0a685d3 100644
--- a/Lib/typing.py
+++ b/Lib/typing.py
@@ -13,7 +13,7 @@ At large scale, the structure of the module is following:
* 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.
"""
@@ -1885,6 +1885,19 @@ class TypedDict(dict, metaclass=_TypedDictMeta):
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+
"""
diff --git a/Misc/NEWS.d/next/Documentation/2020-02-18-18-37-07.bpo-39572.CCtzy1.rst b/Misc/NEWS.d/next/Documentation/2020-02-18-18-37-07.bpo-39572.CCtzy1.rst
new file mode 100644
index 0000000..d47bb45
--- /dev/null
+++ b/Misc/NEWS.d/next/Documentation/2020-02-18-18-37-07.bpo-39572.CCtzy1.rst
@@ -0,0 +1 @@
+Updated documentation of ``total`` flag of TypeDict.