Commit 130717fe authored by Michael Lee's avatar Michael Lee Committed by Ivan Levkivskyi

Clarify that Type[SomeTypeVar] is legal (#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).
parent bb816517
...@@ -169,6 +169,8 @@ It is possible to declare the return type of a callable without specifying ...@@ -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 the call signature by substituting a literal ellipsis
for the list of arguments in the type hint: ``Callable[..., ReturnType]``. for the list of arguments in the type hint: ``Callable[..., ReturnType]``.
.. _generics:
Generics Generics
-------- --------
...@@ -183,7 +185,7 @@ subscription to denote expected types for container elements. ...@@ -183,7 +185,7 @@ subscription to denote expected types for container elements.
def notify_by_email(employees: Sequence[Employee], def notify_by_email(employees: Sequence[Employee],
overrides: Mapping[str, str]) -> None: ... 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`. called :class:`TypeVar`.
:: ::
...@@ -488,8 +490,9 @@ The module defines the following classes, functions and decorators: ...@@ -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 required to handle this particular case may change in future revisions of
:pep:`484`. :pep:`484`.
The only legal parameters for :class:`Type` are classes, unions of classes, and The only legal parameters for :class:`Type` are classes, :data:`Any`,
:data:`Any`. For example:: :ref:`type variables <generics>`, and unions of any of these types.
For example::
def new_non_team_user(user_class: Type[Union[BaseUser, ProUser]]): ... def new_non_team_user(user_class: Type[Union[BaseUser, ProUser]]): ...
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment