Message 397486 - Python tracker
Oh this is a fun one :). > The code for recognizing TypeVars must be wrong. Is it also wrong in e.g. list[T]? list[T] is correct. I was pretty puzzled since I thought their code is nearly the same, but then I noticed a subtle difference -- GenericAlias checks for type(o).__module__ == "typing", while Union checks for o.__module__ == "typing", and o.__module__ is wherever the user defines it.