mirror of
https://github.com/python/cpython.git
synced 2025-09-10 02:36:56 +00:00
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:
parent
13c4def692
commit
d4544cb232
2 changed files with 10 additions and 1 deletions
|
@ -1435,7 +1435,8 @@ location listed above.
|
||||||
# List the built-in subclasses, if any:
|
# List the built-in subclasses, if any:
|
||||||
subclasses = sorted(
|
subclasses = sorted(
|
||||||
(str(cls.__name__) for cls in type.__subclasses__(object)
|
(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
|
key=str.lower
|
||||||
)
|
)
|
||||||
no_of_subclasses = len(subclasses)
|
no_of_subclasses = len(subclasses)
|
||||||
|
|
|
@ -556,6 +556,14 @@ class PydocDocTest(unittest.TestCase):
|
||||||
| ... and 82 other subclasses
|
| ... and 82 other subclasses
|
||||||
"""
|
"""
|
||||||
doc = pydoc.TextDoc()
|
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)
|
text = doc.docclass(object)
|
||||||
snip = (" | Built-in subclasses:\n"
|
snip = (" | Built-in subclasses:\n"
|
||||||
" | async_generator\n"
|
" | async_generator\n"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue