Type classes in Python are meant as annotations; they are not for run-time. They essentially get erased (not exactly, as they are available for introspection, but they aren't your typical code).
No, I understand that (although things like @runtime_checkable and NamedTuple muddle things a bit). My point is that, based on the error messages, Literal both is and isn't a generic type.