summaryrefslogtreecommitdiffstats
path: root/Doc/library
diff options
context:
space:
mode:
authorFranek Magiera <framagie@gmail.com>2023-04-26 22:39:39 (GMT)
committerGitHub <noreply@github.com>2023-04-26 22:39:39 (GMT)
commitdc3f97549a8fe4f7fea8d0326e394760b51caa6e (patch)
tree08df1682275e0a96345b6664c26a98c306d1dc51 /Doc/library
parenta3a5b4bb232ba29875147baa3b56a5524eece353 (diff)
downloadcpython-dc3f97549a8fe4f7fea8d0326e394760b51caa6e.zip
cpython-dc3f97549a8fe4f7fea8d0326e394760b51caa6e.tar.gz
cpython-dc3f97549a8fe4f7fea8d0326e394760b51caa6e.tar.bz2
gh-103629: Update typing.Unpack docs in compliance with PEP 692 (#103894)
Diffstat (limited to 'Doc/library')
-rw-r--r--Doc/library/typing.rst24
1 files changed, 22 insertions, 2 deletions
diff --git a/Doc/library/typing.rst b/Doc/library/typing.rst
index 15bab77..409a95d 100644
--- a/Doc/library/typing.rst
+++ b/Doc/library/typing.rst
@@ -98,6 +98,9 @@ annotations. These include:
*Introducing* :data:`LiteralString`
* :pep:`681`: Data Class Transforms
*Introducing* the :func:`@dataclass_transform<dataclass_transform>` decorator
+* :pep:`692`: Using ``TypedDict`` for more precise ``**kwargs`` typing
+ *Introducing* a new way of typing ``**kwargs`` with :data:`Unpack` and
+ :data:`TypedDict`
* :pep:`698`: Adding an override decorator to typing
*Introducing* the :func:`@override<override>` decorator
@@ -1417,8 +1420,10 @@ These are not used in annotations. They are building blocks for creating generic
tup: tuple[Unpack[Ts]]
In fact, ``Unpack`` can be used interchangeably with ``*`` in the context
- of types. You might see ``Unpack`` being used explicitly in older versions
- of Python, where ``*`` couldn't be used in certain places::
+ of :class:`typing.TypeVarTuple <TypeVarTuple>` and
+ :class:`builtins.tuple <tuple>` types. You might see ``Unpack`` being used
+ explicitly in older versions of Python, where ``*`` couldn't be used in
+ certain places::
# In older versions of Python, TypeVarTuple and Unpack
# are located in the `typing_extensions` backports package.
@@ -1428,6 +1433,21 @@ These are not used in annotations. They are building blocks for creating generic
tup: tuple[*Ts] # Syntax error on Python <= 3.10!
tup: tuple[Unpack[Ts]] # Semantically equivalent, and backwards-compatible
+ ``Unpack`` can also be used along with :class:`typing.TypedDict` for typing
+ ``**kwargs`` in a function signature::
+
+ from typing import TypedDict, Unpack
+
+ class Movie(TypedDict):
+ name: str
+ year: int
+
+ # This function expects two keyword arguments - `name` of type `str`
+ # and `year` of type `int`.
+ def foo(**kwargs: Unpack[Movie]): ...
+
+ See :pep:`692` for more details on using ``Unpack`` for ``**kwargs`` typing.
+
.. versionadded:: 3.11
.. class:: ParamSpec(name, *, bound=None, covariant=False, contravariant=False)