From 72276a2dc2b747377bf260d723b2a68b41ae410f Mon Sep 17 00:00:00 2001 From: Armin Ronacher Date: Fri, 2 May 2008 18:19:54 +0000 Subject: [PATCH] autodoc detects descriptors properly now --- CHANGES | 1 + sphinx/ext/autodoc.py | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index e39bcfb1c..c9c46d7b4 100644 --- a/CHANGES +++ b/CHANGES @@ -6,6 +6,7 @@ New features added * If the `pygments_style` config value contains a dot it's treated as the import path of a custom Pygments style class. +* autodoc detects descriptors properly now * A new config value, `exclude_dirs`, can be used to exclude whole directories from the search for source files. diff --git a/sphinx/ext/autodoc.py b/sphinx/ext/autodoc.py index 466ab0beb..d10f5babe 100644 --- a/sphinx/ext/autodoc.py +++ b/sphinx/ext/autodoc.py @@ -32,6 +32,14 @@ _charset_re = re.compile(r'coding[:=]\s*([-\w.]+)') _module_charsets = {} +def isdescriptor(x): + """Check if the object is some kind of descriptor.""" + for item in '__get__', '__set__', '__delete__': + if callable(getattr(x, item, None)): + return True + return False + + def prepare_docstring(s): """ Convert a docstring into lines of parseable reST. Return it as a list of @@ -217,7 +225,7 @@ def generate_rst(what, name, members, undoc, add_content, document, lineno, else: if callable(member): memberwhat = 'method' - elif isinstance(member, property): + elif isdescriptor(member): memberwhat = 'attribute' else: # XXX: todo -- attribute docs