Typing and runtime have their own, sometimes discrepant rules.
In the end, it's the runtime that matters.
x: complex = True
assert isinstance(x, complex)
message: str = NotImplemented
assert isinstance(message, str)
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from circular import something
from costly import just_for_types
else:
something very hacky!