![](https://secure.gravatar.com/avatar/16090471dbf2942bf4c002ac1ee0cbc7.jpg?s=120&d=mm&r=g)
Please note that this is a thread about PEP 649.
If PEP 649 accepted and PEP 563 dies, all such idioms breaks annotation completely.
Users need to import all heavy modules and circular references used only type hints, or user can not get even string form annotation which is very useful for REPLs.
I don't see why `if TYPE_CHECKING:` idiom breaks annotations with PEP 649. There will be no error as long as `__annotations__` descriptor is not called. And currently in 3.9 (with or without `from __future__ import annotations`), the issue is the same: you `get_type_hints` fails if some of the types in the annotations have been imported in a `if TYPE_CHECKING:` block.
Hm, that's a rather serious problem with Larry's PEP 649 compared to from __future__ import annotations, actually.
As I've written above, this is not a new issue, and neither this PEP nor PEP 563 can fix it.