https://github.com/python/cpython/commit/979d76620990e6f8d68fa63e0ae0db1ec5b4d14c
commit: 979d76620990e6f8d68fa63e0ae0db1ec5b4d14c
branch: main
author: Serhiy Storchaka <[email protected]>
committer: serhiy-storchaka <[email protected]>
date: 2025-02-04T16:25:49+02:00
summary:
gh-128772: Fix pydoc for methods with __module__ is None (GH-129177)
files:
A Lib/test/test_pydoc/module_none.py
A Misc/NEWS.d/next/Library/2025-01-22-13-29-06.gh-issue-128772.6YrxYM.rst
M Lib/pydoc.py
M Lib/test/test_pydoc/test_pydoc.py
diff --git a/Lib/pydoc.py b/Lib/pydoc.py
index 922946e5fa7ddb..1839b88fec28b1 100644
--- a/Lib/pydoc.py
+++ b/Lib/pydoc.py
@@ -245,7 +245,7 @@ def parentname(object, modname):
if necessary) or module."""
if '.' in object.__qualname__:
name = object.__qualname__.rpartition('.')[0]
- if object.__module__ != modname:
+ if object.__module__ != modname and object.__module__ is not None:
return object.__module__ + '.' + name
else:
return name
diff --git a/Lib/test/test_pydoc/module_none.py
b/Lib/test/test_pydoc/module_none.py
new file mode 100644
index 00000000000000..ebb50fc86e2cf7
--- /dev/null
+++ b/Lib/test/test_pydoc/module_none.py
@@ -0,0 +1,8 @@
+def func():
+ pass
+func.__module__ = None
+
+class A:
+ def method(self):
+ pass
+ method.__module__ = None
diff --git a/Lib/test/test_pydoc/test_pydoc.py
b/Lib/test/test_pydoc/test_pydoc.py
index b02ba3aafd4d20..0abd36c5e076e2 100644
--- a/Lib/test/test_pydoc/test_pydoc.py
+++ b/Lib/test/test_pydoc/test_pydoc.py
@@ -1903,6 +1903,11 @@ def a_fn_with_https_link():
html
)
+ def test_module_none(self):
+ # Issue #128772
+ from test.test_pydoc import module_none
+ pydoc.render_doc(module_none)
+
class PydocFodderTest(unittest.TestCase):
def tearDown(self):
diff --git
a/Misc/NEWS.d/next/Library/2025-01-22-13-29-06.gh-issue-128772.6YrxYM.rst
b/Misc/NEWS.d/next/Library/2025-01-22-13-29-06.gh-issue-128772.6YrxYM.rst
new file mode 100644
index 00000000000000..53d6b3ccaffda8
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2025-01-22-13-29-06.gh-issue-128772.6YrxYM.rst
@@ -0,0 +1,2 @@
+Fix :mod:`pydoc` for methods with the ``__module__`` attribute equal to
+``None``.
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]