diff options
| author | ananthan-123 <ananthakrishnan15.2001@gmail.com> | 2020-02-19 10:03:05 +0530 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-02-18 20:33:05 -0800 | 
| commit | ab6423fe2de0ed5f8a0dc86a9c7070229326b0f0 (patch) | |
| tree | f3906601d6712af51a19f3771886add951b491ca | |
| parent | a4ba8a3983356fceb4aedabe0c338180666a79aa (diff) | |
| download | cpython-git-ab6423fe2de0ed5f8a0dc86a9c7070229326b0f0.tar.gz | |
bpo-39572: Document ’total’ flag of TypedDict (GH-18554)
| -rw-r--r-- | Doc/library/typing.rst | 16 | ||||
| -rw-r--r-- | Lib/typing.py | 15 | ||||
| -rw-r--r-- | Misc/NEWS.d/next/Documentation/2020-02-18-18-37-07.bpo-39572.CCtzy1.rst | 1 | 
3 files changed, 29 insertions, 3 deletions
diff --git a/Doc/library/typing.rst b/Doc/library/typing.rst index d3bab94c6d..eac75ee865 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 6da145fcdb..0a685d304b 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 0000000000..d47bb455e7 --- /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.  | 
