TYP: update to mypy-0.910
we will be able to start using TypeGuard https://docs.python.org/3.10/library/typing.html#typing.TypeGuard (imported from typing_extensions inside a TYPE_CHECKING)

Unfortunately, we can't use overloads or preserve types and most of our casts will still be required as the narrowed type will be wider in most cases! nice!