summaryrefslogtreecommitdiff
path: root/sphinx/ext/autodoc.py
diff options
context:
space:
mode:
authorDavid Ham <David,Ham@imperial.ac.uk>2013-08-12 19:26:37 +0100
committerDavid Ham <David,Ham@imperial.ac.uk>2013-08-12 19:26:37 +0100
commite6c8dd57270cb5deed493ddac95618a5da7751d0 (patch)
tree37acf6977a8cf05ba3cf933edfa80ce54af26ca6 /sphinx/ext/autodoc.py
parent88c72be190afd98cc1619624ae37b8955f393e97 (diff)
downloadsphinx-git-e6c8dd57270cb5deed493ddac95618a5da7751d0.tar.gz
Create a derivative of the DocstringSignatureMixin which strips
signature strings from attributes. This scenario can occur when using Cython and turning methods into attributes with an @property decorator.
Diffstat (limited to 'sphinx/ext/autodoc.py')
-rw-r--r--sphinx/ext/autodoc.py16
1 files changed, 15 insertions, 1 deletions
diff --git a/sphinx/ext/autodoc.py b/sphinx/ext/autodoc.py
index 555a31066..53c7a2506 100644
--- a/sphinx/ext/autodoc.py
+++ b/sphinx/ext/autodoc.py
@@ -924,6 +924,20 @@ class DocstringSignatureMixin(object):
self.args, self.retann = result
return Documenter.format_signature(self)
+class DocstringStripSignatureMixin(DocstringSignatureMixin):
+ """
+ Mixin for AttributeDocumenter to provide the
+ feature of stripping any function signature from the docstring.
+ """
+ def format_signature(self):
+ if self.args is None and self.env.config.autodoc_docstring_signature:
+ # only act if a signature is not explicitly given already, and if
+ # the feature is enabled
+ result = self._find_signature()
+ if result is not None:
+ self.retann = result[1]
+ return Documenter.format_signature(self)
+
class FunctionDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter):
"""
@@ -1188,7 +1202,7 @@ class MethodDocumenter(DocstringSignatureMixin, ClassLevelDocumenter):
pass
-class AttributeDocumenter(ClassLevelDocumenter):
+class AttributeDocumenter(DocstringStripSignatureMixin,ClassLevelDocumenter):
"""
Specialized Documenter subclass for attributes.
"""