For the current code I am writing, this proposal will fulfill my number one wish, which is exhaustiveness matching for enumerations. Where previously I used e.g. class Status(enum.Enum): Started = 'STARTED' Finished = 'FINISHED' def example(status: Status) -> int: if status is Status.Started: return 1 elif status is Status.Finished: return 2 else: assert False, 'Impossible' I could now use Status2 = Literal['STARTED', 'FINISHED'] def example(status: Status2) -> int: if status == 'STARTED': return 1 elif status 'FINISHED': return 2 else: assert_never(status) where `assert_never` is as discussed in https://github.com/python/mypy/issues/5818. Of course, I would prefer to keep using Enums. That would require the type checker to consider `Status` similarly to `Literal[Status.Started, Status.Finished]`. This is what TypeScript does with its "const enums". The PEP does not discuss this particular point. Ran