From: Vladimír Vondruš Date: Mon, 11 May 2020 09:58:15 +0000 (+0200) Subject: documentation/python: improve the Py3.6-specific _gorg workaround. X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~cjwatson/git?a=commitdiff_plain;h=515ce1f532d8be307a8f35576e706831fb44f5f2;p=blog.git 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. --- 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)