From 0fe3fbe3eb44d894c65ed2eb725824528f5b8102 Mon Sep 17 00:00:00 2001 From: "M. Eric Irrgang" Date: Tue, 8 Oct 2019 12:59:06 +0300 Subject: [PATCH] Documentation update for bpo-32996 fix. PR #4906 changed the typing.Generic class hierarchy, leaving an outdated comment in the library reference. User-defined Generic ABCs now must get a abc.ABCMeta metaclass from something other than typing.Generic inheritance. --- Doc/library/typing.rst | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Doc/library/typing.rst b/Doc/library/typing.rst index 627c1f77c157d6..09cf934fa9753b 100644 --- a/Doc/library/typing.rst +++ b/Doc/library/typing.rst @@ -306,9 +306,10 @@ User defined generic type aliases are also supported. Examples:: def inproduct(v: Vec[T]) -> T: # Same as Iterable[Tuple[T, T]] return sum(x*y for x, y in v) -The metaclass used by :class:`Generic` is a subclass of :class:`abc.ABCMeta`. -A generic class can be an ABC by including abstract methods or properties, -and generic classes can also have ABCs as base classes without a metaclass +.. versionchanged:: 3.7 + :class:`Generic` no longer has a metaclass. + +A user-defined generic class can have ABCs as base classes without a metaclass conflict. Generic metaclasses are not supported. The outcome of parameterizing generics is cached, and most types in the typing module are hashable and comparable for equality.