bpo-32873: Remove a name hack for generic aliases in typing module (GH-6376)

This removes a hack and replaces it with a proper
mapping {'list': 'List', 'dict': 'Dict', ...}.
(cherry picked from commit 2a363d2930)

Co-authored-by: Ivan Levkivskyi <levkivskyi@gmail.com>
This commit is contained in:
Miss Islington (bot) 2018-04-04 17:46:40 -07:00 committed by GitHub
parent bd85c97382
commit 04eac02088
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 3 deletions

View file

@ -611,6 +611,19 @@ class TypeVar(_Final, _Immutable, _root=True):
# * __args__ is a tuple of all arguments used in subscripting,
# e.g., Dict[T, int].__args__ == (T, int).
# Mapping from non-generic type names that have a generic alias in typing
# but with a different name.
_normalize_alias = {'list': 'List',
'tuple': 'Tuple',
'dict': 'Dict',
'set': 'Set',
'frozenset': 'FrozenSet',
'deque': 'Deque',
'defaultdict': 'DefaultDict',
'type': 'Type',
'Set': 'AbstractSet'}
def _is_dunder(attr):
return attr.startswith('__') and attr.endswith('__')
@ -629,7 +642,7 @@ class _GenericAlias(_Final, _root=True):
self._special = special
if special and name is None:
orig_name = origin.__name__
name = orig_name[0].title() + orig_name[1:]
name = _normalize_alias.get(orig_name, orig_name)
self._name = name
if not isinstance(params, tuple):
params = (params,)