From 3a2b89580ded72262fbea0f7ad24096a90c42b9c Mon Sep 17 00:00:00 2001 From: Jelle Zijlstra Date: Fri, 18 Mar 2022 10:56:36 -0700 Subject: bpo-43224: Add TypeVarTuple.__name__ (GH-31954) I noticed that TypeVar and ParamSpec put their name in a __name__ attribute, but TypeVarTuple doesn't. Let's be consistent. --- Lib/test/test_typing.py | 15 ++++++--------- Lib/typing.py | 4 ++-- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py index bcffdc8..0e28655 100644 --- a/Lib/test/test_typing.py +++ b/Lib/test/test_typing.py @@ -415,6 +415,12 @@ class TypeVarTupleTests(BaseTestCase): if not string.endswith(tail): self.fail(f"String {string!r} does not end with {tail!r}") + def test_name(self): + Ts = TypeVarTuple('Ts') + self.assertEqual(Ts.__name__, 'Ts') + Ts2 = TypeVarTuple('Ts2') + self.assertEqual(Ts2.__name__, 'Ts2') + def test_instance_is_equal_to_itself(self): Ts = TypeVarTuple('Ts') self.assertEqual(Ts, Ts) @@ -509,15 +515,6 @@ class TypeVarTupleTests(BaseTestCase): self.assertEqual(repr(Unpack[tuple[Unpack[Ts]]]), '*tuple[*Ts]') self.assertEqual(repr(Unpack[Tuple[Unpack[Ts]]]), '*typing.Tuple[*Ts]') - def test_repr_is_correct(self): - Ts = TypeVarTuple('Ts') - self.assertEqual(repr(Ts), 'Ts') - self.assertEqual(repr(Unpack[Ts]), '*Ts') - self.assertEqual(repr(tuple[Unpack[Ts]]), 'tuple[*Ts]') - self.assertEqual(repr(Tuple[Unpack[Ts]]), 'typing.Tuple[*Ts]') - self.assertEqual(repr(Unpack[tuple[Unpack[Ts]]]), '*tuple[*Ts]') - self.assertEqual(repr(Unpack[Tuple[Unpack[Ts]]]), '*typing.Tuple[*Ts]') - def test_variadic_class_repr_is_correct(self): Ts = TypeVarTuple('Ts') class A(Generic[Unpack[Ts]]): pass diff --git a/Lib/typing.py b/Lib/typing.py index e861362..f0e8490 100644 --- a/Lib/typing.py +++ b/Lib/typing.py @@ -939,13 +939,13 @@ class TypeVarTuple(_Final, _Immutable, _root=True): """ def __init__(self, name): - self._name = name + self.__name__ = name def __iter__(self): yield Unpack[self] def __repr__(self): - return self._name + return self.__name__ def __typing_subst__(self, arg): raise AssertionError -- cgit v0.12