diff options
author | Franek Magiera <framagie@gmail.com> | 2023-04-26 22:39:39 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-26 22:39:39 (GMT) |
commit | dc3f97549a8fe4f7fea8d0326e394760b51caa6e (patch) | |
tree | 08df1682275e0a96345b6664c26a98c306d1dc51 /Doc/library | |
parent | a3a5b4bb232ba29875147baa3b56a5524eece353 (diff) | |
download | cpython-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.rst | 24 |
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) |