From 515ce1f532d8be307a8f35576e706831fb44f5f2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Mon, 11 May 2020 11:58:15 +0200 Subject: [PATCH] documentation/python: improve the Py3.6-specific _gorg workaround. This should fix the assert reproduced by the previous commit, though the __next_in_mro__ still needs to be ignored. --- documentation/python.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/documentation/python.py b/documentation/python.py index 57ad47bb..d448bcea 100755 --- a/documentation/python.py +++ b/documentation/python.py @@ -409,8 +409,11 @@ def crawl_class(state: State, path: List[str], class_): if name in ['__base__', '__class__']: continue # TODO # Classes derived from typing.Generic in 3.6 have a _gorg property # that causes a crawl cycle, firing an assert in crawl_class(). Not - # present from 3.7 onwards. - if sys.version_info < (3, 7) and class_.__base__ is typing.Generic and name == '_gorg': continue + # present from 3.7 onwards. Can't use isinstance(object, Generic) + # because "Class typing.Generic cannot be used with class or + # instance checks" (ugh), object.__base__ == Generic is also not + # enough because it fails for typing.Iterator.__base__. + if sys.version_info < (3, 7) and name == '_gorg' and type(object) == typing.GenericMeta: continue if is_underscored_and_undocumented(state, type_, subpath, object.__doc__): continue crawl_class(state, subpath, object) -- 2.30.2