gh-128923: fix test_pydoc for object subclasses without __module__ (#128951)

Fix pydoc's docclass() for classes inheriting from object without the `__module__` attribute, like `_testcapi.HeapType`.
This commit is contained in:
T. Wouters 2025-01-17 23:43:17 +01:00 committed by GitHub
parent 13c4def692
commit d4544cb232
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 10 additions and 1 deletions

View file

@ -1435,7 +1435,8 @@ location listed above.
# List the built-in subclasses, if any:
subclasses = sorted(
(str(cls.__name__) for cls in type.__subclasses__(object)
if not cls.__name__.startswith("_") and cls.__module__ == "builtins"),
if (not cls.__name__.startswith("_") and
getattr(cls, '__module__', '') == "builtins")),
key=str.lower
)
no_of_subclasses = len(subclasses)

View file

@ -556,6 +556,14 @@ class PydocDocTest(unittest.TestCase):
| ... and 82 other subclasses
"""
doc = pydoc.TextDoc()
try:
# Make sure HeapType, which has no __module__ attribute, is one
# of the known subclasses of object. (doc.docclass() used to
# fail if HeapType was imported before running this test, like
# when running tests sequentially.)
from _testcapi import HeapType
except ImportError:
pass
text = doc.docclass(object)
snip = (" | Built-in subclasses:\n"
" | async_generator\n"