[$] When and how to evaluate Python annotations

Annotations in Python came late to the party; they were introduced in
Python 3 as a way to attach information to functions describing their arguments and
return values. While that mechanism had obvious applications for adding
type information to Python functions, standardized interpretations for the
annotations came later with type hints.
But evaluating the annotations at function-definition time caused some
difficulties, especially with respect to forward references to type names,
so a Python Enhancement Proposal (PEP) was created to postpone their
evaluation until they were needed. The PEP-described behavior was set to
become the default in the upcoming Python 3.10 release, but that is
not to be; the postponement of evaluation by default has itself been postponed in the
hopes of unwinding things.

Source: LWN.net – [$] When and how to evaluate Python annotations