mirror of
https://github.com/python/cpython.git
synced 2025-07-24 03:35:53 +00:00
bpo-38605: Make 'from __future__ import annotations' the default (GH-20434)
The hard part was making all the tests pass; there are some subtle issues here, because apparently the future import wasn't tested very thoroughly in previous Python versions. For example, `inspect.signature()` returned type objects normally (except for forward references), but strings with the future import. We changed it to try and return type objects by calling `typing.get_type_hints()`, but fall back on returning strings if that function fails (which it may do if there are future references in the annotations that require passing in a specific namespace to resolve).
This commit is contained in:
parent
bef7d299eb
commit
044a1048ca
27 changed files with 403 additions and 299 deletions
|
@ -610,13 +610,9 @@ following the parameter name. Any parameter may have an annotation, even those
|
|||
``*identifier`` or ``**identifier``. Functions may have "return" annotation of
|
||||
the form "``-> expression``" after the parameter list. These annotations can be
|
||||
any valid Python expression. The presence of annotations does not change the
|
||||
semantics of a function. The annotation values are available as values of
|
||||
a dictionary keyed by the parameters' names in the :attr:`__annotations__`
|
||||
attribute of the function object. If the ``annotations`` import from
|
||||
:mod:`__future__` is used, annotations are preserved as strings at runtime which
|
||||
enables postponed evaluation. Otherwise, they are evaluated when the function
|
||||
definition is executed. In this case annotations may be evaluated in
|
||||
a different order than they appear in the source code.
|
||||
semantics of a function. The annotation values are available as string values
|
||||
in a dictionary keyed by the parameters' names in the :attr:`__annotations__`
|
||||
attribute of the function object.
|
||||
|
||||
.. index:: pair: lambda; expression
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue