Clarify meaning of bare Tuple, etc. (#110)

Fixes python/typing#284
This commit is contained in:
Ivan Levkivskyi 2016-09-27 17:34:50 +02:00 committed by Guido van Rossum
parent 93111da051
commit 5f30d8f81a
1 changed files with 27 additions and 0 deletions

View File

@ -1019,6 +1019,33 @@ the other hand, when a value has type ``Any``, the type checker will
allow all operations on it, and a value of type ``Any`` can be assigned
to a variable (or used as a return value) of a more constrained type.
A function parameter without an annotation is assumed to be annotated with
``Any``. If a gneric type is used without specifying type parameters,
they assumed to be ``Any``::
from typing import Mapping
def use_map(m: Mapping) -> None: # Same as Mapping[Any, Any]
...
This rule also applies to ``Tuple``, in annotation context it is equivalent
to ``Tuple[Any, ...]`` and, in turn, to ``tuple``. As well, a bare
``Callable`` in an annotation is equivalent to ``Callable[[...], Any]`` and,
in turn, to ``collections.abc.Callable``::
from typing import Tuple, List, Callable
def check_args(args: Tuple) -> bool:
...
check_args(()) # OK
check_args((42, 'abc')) # Also OK
check_args(3.14) # Flagged as error by a type checker
# A list of arbitrary callables is accepted by this function
def apply_callbacks(cbs: List[Callable]) -> None:
...
The type of class objects
-------------------------