summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Waltman <jonathan.waltman@gmail.com>2012-09-16 01:08:47 -0500
committerJonathan Waltman <jonathan.waltman@gmail.com>2012-09-16 01:08:47 -0500
commitbf362e9ccbf03988116d1c55209ae17ec8c17117 (patch)
treee1e78977c44edfb3e4e8e1f1513f019cf68556a0
parentead356e3cfa974e715ae4b9954b3ae5aee44b24c (diff)
downloadsphinx-git-bf362e9ccbf03988116d1c55209ae17ec8c17117.tar.gz
Closes #617: Fix docstring preparation without included signature: only ignore indentation of one line, not two.
-rw-r--r--sphinx/ext/autodoc.py5
-rw-r--r--tests/test_autodoc.py13
-rw-r--r--tests/test_only_directive.py2
3 files changed, 17 insertions, 3 deletions
diff --git a/sphinx/ext/autodoc.py b/sphinx/ext/autodoc.py
index 9c6575f52..c15726b48 100644
--- a/sphinx/ext/autodoc.py
+++ b/sphinx/ext/autodoc.py
@@ -862,7 +862,7 @@ class DocstringSignatureMixin(object):
"""
def _find_signature(self, encoding=None):
- docstrings = Documenter.get_doc(self, encoding, 2)
+ docstrings = Documenter.get_doc(self, encoding)
if len(docstrings) != 1:
return
doclines = docstrings[0]
@@ -877,6 +877,9 @@ class DocstringSignatureMixin(object):
# the base name must match ours
if not self.objpath or base != self.objpath[-1]:
return
+ # re-prepare docstring to ignore indentation after signature
+ docstrings = Documenter.get_doc(self, encoding, 2)
+ doclines = docstrings[0]
# ok, now jump over remaining empty lines and set the remaining
# lines as the new doclines
i = 1
diff --git a/tests/test_autodoc.py b/tests/test_autodoc.py
index 965064c37..6dedaad8f 100644
--- a/tests/test_autodoc.py
+++ b/tests/test_autodoc.py
@@ -519,6 +519,12 @@ def test_generate():
assert_result_contains(
' rest of docstring', 'method', 'test_autodoc.DocstringSig.meth')
assert_result_contains(
+ '.. py:method:: DocstringSig.meth2()', 'method',
+ 'test_autodoc.DocstringSig.meth2')
+ assert_result_contains(
+ ' indented line', 'method',
+ 'test_autodoc.DocstringSig.meth2')
+ assert_result_contains(
'.. py:classmethod:: Class.moore(a, e, f) -> happiness', 'method',
'test_autodoc.Class.moore')
@@ -660,6 +666,13 @@ First line of docstring
rest of docstring
"""
+ def meth2(self):
+ """First line, no signature
+ Second line followed by indentation::
+
+ indented line
+ """
+
class StrRepr(str):
def __repr__(self):
return self
diff --git a/tests/test_only_directive.py b/tests/test_only_directive.py
index 10683613c..2396046e4 100644
--- a/tests/test_only_directive.py
+++ b/tests/test_only_directive.py
@@ -39,7 +39,6 @@ def test_sectioning(app):
def testsects(prefix, sects, indent=0):
title = sects[0]
- sprint(' ' * indent + title)
parent_num = title.split()[0]
assert prefix == parent_num, \
'Section out of place: %r' % title
@@ -56,7 +55,6 @@ def test_sectioning(app):
parts = [getsects(n)
for n in filter(lambda n: isinstance(n, nodes.section),
doctree.children)]
- sprint('\nChecking headings in only.txt:')
for i, s in enumerate(parts):
testsects(str(i+1) + '.', s, 4)
assert len(parts) == 4, 'Expected 4 document level headings, got:\n%s' % \