Fall back to the typing.* namespace in lazy hint contexts

I was wondering about a rather different option: deferred imports.

Instead of putting annotation-only imports behind an if TYPE_CHECKING guard, could we instead make them lazy?

At it’s simplest, that might be something like

typing = LazyImport("typing")
Final = LazyImport("typing", "Final")

Or perhaps we add new syntax, or perhaps there’s some much smarter option I’ve not thought of.

The key would be integrating this into both type checkers and runtime annotation resolution, so you only pay the cost of the import if you use code that checks annotations at runtime.

This would allow types outside of typing to participate.