Skip to content

Commit 52baa70

Browse files
Benedikt's review
1 parent 6e19602 commit 52baa70

3 files changed

Lines changed: 8 additions & 7 deletions

File tree

Lib/test/test_typing.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4731,10 +4731,10 @@ def __init_subclass__(cls) -> None:
47314731
class Sub(Base, Generic[T]):
47324732
pass
47334733

4734-
with self.assertRaisesRegex(TypeError,
4735-
r"type object '.*Sub' has no attribute "
4736-
r"'__parameters__'; Maybe you forgot to call "
4737-
r"super\(\).__init_subclass__\(\)\?"):
4734+
msg = (r"type object '.*Sub' has no attribute " +
4735+
re.escape("'__parameters__'. Maybe you forgot to call "
4736+
"super().__init_subclass__()?"))
4737+
with self.assertRaisesRegex(TypeError, msg):
47384738
Sub[int]
47394739

47404740
def test_generic_subclass_checks(self):

Lib/typing.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1162,7 +1162,7 @@ def _generic_class_getitem(cls, args):
11621162
parameters = cls.__parameters__
11631163
except AttributeError:
11641164
raise TypeError(f"type object '{cls.__qualname__}' has no attribute "
1165-
f"'__parameters__'; Maybe you forgot to call "
1165+
f"'__parameters__'. Maybe you forgot to call "
11661166
f"super().__init_subclass__()?") from None
11671167
for param in parameters:
11681168
prepare = getattr(param, '__typing_prepare_subst__', None)
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
1-
Add suggestion to inscrutable error about ``cls.__parameters__`` not
2-
existing, because ``super().__init_subclass__()`` was not called.
1+
Add suggestion to error message for :class:`typing.Generic` subclasses when
2+
``cls.__parameters__`` is missing due to a parent class failing to call
3+
``super().__init_subclass__()`` in its ``__init_subclass__``.

0 commit comments

Comments
 (0)