summaryrefslogtreecommitdiff
path: root/sphinx/ext/autodoc.py
diff options
context:
space:
mode:
Diffstat (limited to 'sphinx/ext/autodoc.py')
-rw-r--r--sphinx/ext/autodoc.py15
1 files changed, 11 insertions, 4 deletions
diff --git a/sphinx/ext/autodoc.py b/sphinx/ext/autodoc.py
index 705853c20..ef09b61a1 100644
--- a/sphinx/ext/autodoc.py
+++ b/sphinx/ext/autodoc.py
@@ -971,10 +971,10 @@ class MethodDocumenter(ClassLevelDocumenter):
"""
objtype = 'method'
member_order = 50
+ priority = 0
@classmethod
def can_document_member(cls, member, membername, isattr, parent):
- # other attributes are recognized via the module analyzer
return inspect.isroutine(member) and \
not isinstance(parent, ModuleDocumenter)
@@ -1017,11 +1017,18 @@ class AttributeDocumenter(ClassLevelDocumenter):
objtype = 'attribute'
member_order = 60
+ # must be higher than the MethodDocumenter, else it will recognize
+ # some non-data descriptors as methods
+ priority = 10
+
+ method_types = (FunctionType, BuiltinFunctionType, MethodType)
+
@classmethod
def can_document_member(cls, member, membername, isattr, parent):
- return (isdescriptor(member) and not
- isinstance(member, (FunctionType, BuiltinFunctionType))) \
- or (not isinstance(parent, ModuleDocumenter) and isattr)
+ isdatadesc = isdescriptor(member) and not \
+ isinstance(member, cls.method_types)
+ return isdatadesc or \
+ (isattr and not isinstance(parent, ModuleDocumenter))
def document_members(self, all_members=False):
pass