]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.13] gh-128772: Fix pydoc for methods with __module__ is None (GH-129177) (GH-129653)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Wed, 5 Feb 2025 14:42:51 +0000 (15:42 +0100)
committerGitHub <noreply@github.com>
Wed, 5 Feb 2025 14:42:51 +0000 (14:42 +0000)
(cherry picked from commit 979d76620990e6f8d68fa63e0ae0db1ec5b4d14c)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Lib/pydoc.py
Lib/test/test_pydoc/module_none.py [new file with mode: 0644]
Lib/test/test_pydoc/test_pydoc.py
Misc/NEWS.d/next/Library/2025-01-22-13-29-06.gh-issue-128772.6YrxYM.rst [new file with mode: 0644]

index 1a527b2c307b6836e0571287d54e9ae2e8b0e4ef..591d7bc8f865cf306feb75ee649f9bc15eb83ca2 100755 (executable)
@@ -242,7 +242,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 (file)
index 0000000..ebb50fc
--- /dev/null
@@ -0,0 +1,8 @@
+def func():
+    pass
+func.__module__ = None
+
+class A:
+    def method(self):
+        pass
+    method.__module__ = None
index 9cc2252e29367dfd3771fb855ade267ba5cc35ec..00ec3cdb3d49e569fb6bd8c3cda98fc6e542d476 100644 (file)
@@ -1875,6 +1875,11 @@ foo
             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 (file)
index 0000000..53d6b3c
--- /dev/null
@@ -0,0 +1,2 @@
+Fix :mod:`pydoc` for methods with the ``__module__`` attribute equal to
+``None``.