summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakeshi KOMIYA <i.tkomiya@gmail.com>2021-10-23 02:14:57 +0900
committerTakeshi KOMIYA <i.tkomiya@gmail.com>2021-10-23 02:14:57 +0900
commitced8895b127c6ea84c74dc4df495d0f5e2560d74 (patch)
treeb28daf6e633594c222eba2b5def2832e359ac617
parent6472fb92244f2c8384e0a1b299109398e0e10a52 (diff)
downloadsphinx-git-ced8895b127c6ea84c74dc4df495d0f5e2560d74.tar.gz
Fix #9756: autodoc: Crashed if classmethod does not have __func__ attribute
-rw-r--r--CHANGES1
-rw-r--r--sphinx/util/inspect.py2
2 files changed, 2 insertions, 1 deletions
diff --git a/CHANGES b/CHANGES
index 933abe2f7..68048b276 100644
--- a/CHANGES
+++ b/CHANGES
@@ -60,6 +60,7 @@ Bugs fixed
* #9657: autodoc: The base class for a subclass of mocked object is incorrect
* #9607: autodoc: Incorrect base class detection for the subclasses of the
generic class
+* #9756: autodoc: Crashed if classmethod does not have __func__ attribute
* #9630: autosummary: Failed to build summary table if :confval:`primary_domain`
is not 'py'
* #9670: html: Fix download file with special characters
diff --git a/sphinx/util/inspect.py b/sphinx/util/inspect.py
index 4482f2087..6a89d20e0 100644
--- a/sphinx/util/inspect.py
+++ b/sphinx/util/inspect.py
@@ -865,7 +865,7 @@ def getdoc(obj: Any, attrgetter: Callable = safe_getattr,
if cls and name and isclassmethod(obj, cls, name):
for basecls in getmro(cls):
meth = basecls.__dict__.get(name)
- if meth:
+ if meth and hasattr(meth, '__func__'):
return getdoc(meth.__func__)
doc = attrgetter(obj, '__doc__', None)