PEP 649 and PEP 749 changed annotations to deferred evaluation in Python 3.14 (October 2025). Annotations on modules, classes and functions are no longer evaluated at definition time; they are compiled into a separate function that runs only when something asks for them. Forward references and recursive type hints now work without quoting and without from __future__ import annotations.
The difference from the old __future__ import matters: that import turned annotations into plain strings, which broke anything that needed the real object. Under PEP 649 the annotation evaluates to the actual runtime object when requested, so typing.get_type_hints() and libraries that introspect at runtime keep working.
The new annotationlib module exposes get_annotations() with a Format enum, letting a tool ask for VALUE, FORWARDREF, or STRING without importing whatever the annotation names. Code that read obj.__annotations__ directly and expected strings, or expected an eager NameError, needs review. The __future__ import still exists and still forces stringified annotations, so remove it deliberately rather than leaving both behaviours in one codebase.