Currently, they do return incorrect types:
reveal_type(IOResultE.from_value(int))
# => IOResult[int, Any]
# Should be:
# => IOResult[int, Exception]
To achieve what we want we might tweak the way we create an alias in some way:
- We can use inheritance instead of aliasing
- We can use some magic
- mypy plugin?