Eric's feedback is also important to consider. What compelling benefit does this new type system feature provide over just using a Union?
If you use a Union, then you lose inheritance, which is pretty useful in Python. I use abstract methods, private methods, public methods, common attributes , __init_subclass__, __subclasses__, and even isinstance(..., Base). The base class methods and attributes work with all the IDE features, like rename, jump-to-definition, and find-usage. If class A and class B do not share a common base class, then A.method and B.method are not typically considered related by the IDE, even if A and B appear in a Union somewhere else in the program. I make nominal sum types using an abstract base class in Python all the time even though I don't get exhaustiveness checking. I just add `else: raise NotImplementedError()` everywhere to keep PyCharm from complaining.