Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Clarify that Type[SomeTypeVar] is legal (GH-9585)
Currently, the docs state that when doing `Type[X]`, X is only allowed to
be a class, a union of classes, and Any. This pull request amends
that sentence to clarify X may also be a typevar (or a union involving
classes, Any, and TypeVars).
(cherry picked from commit 130717f)

Co-authored-by: Michael Lee <michael.lee.0x2a@gmail.com>
  • Loading branch information
Michael0x2a authored and miss-islington committed Sep 26, 2018
commit 6a01065f920e21d44dbefa7f17ec9cc295c0625b
9 changes: 6 additions & 3 deletions Doc/library/typing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,8 @@ It is possible to declare the return type of a callable without specifying
the call signature by substituting a literal ellipsis
for the list of arguments in the type hint: ``Callable[..., ReturnType]``.

.. _generics:

Generics
--------

Expand All @@ -183,7 +185,7 @@ subscription to denote expected types for container elements.
def notify_by_email(employees: Sequence[Employee],
overrides: Mapping[str, str]) -> None: ...

Generics can be parametrized by using a new factory available in typing
Generics can be parameterized by using a new factory available in typing
called :class:`TypeVar`.

::
Expand Down Expand Up @@ -488,8 +490,9 @@ The module defines the following classes, functions and decorators:
required to handle this particular case may change in future revisions of
:pep:`484`.

The only legal parameters for :class:`Type` are classes, unions of classes, and
:data:`Any`. For example::
The only legal parameters for :class:`Type` are classes, :data:`Any`,
:ref:`type variables <generics>`, and unions of any of these types.
For example::

def new_non_team_user(user_class: Type[Union[BaseUser, ProUser]]): ...

Expand Down