Why does `TypeVar()` have the required argument `name`? even though we can differentiate type names with variable names

You might be interested in this prior discussion of a possible new token or soft keyword to eliminate the redundant target name as the first argument to such a constructor: