diff --git a/.gitignore b/.gitignore index 7f6f722f..81562fd2 100644 --- a/.gitignore +++ b/.gitignore @@ -4,5 +4,7 @@ *.pyc *.pyo *.egg-info +*.swp +*.swo build dist diff --git a/numpydoc/docscrape.py b/numpydoc/docscrape.py index ed1760b0..70c34293 100644 --- a/numpydoc/docscrape.py +++ b/numpydoc/docscrape.py @@ -327,6 +327,11 @@ def _parse(self): if not section.startswith('..'): section = (s.capitalize() for s in section.split(' ')) section = ' '.join(section) + if self.get(section): + msg = ("The section %s appears twice in the docstring." % + section) + raise ValueError(msg) + if section in ('Parameters', 'Returns', 'Yields', 'Raises', 'Warns', 'Other Parameters', 'Attributes', 'Methods'): diff --git a/numpydoc/tests/test_docscrape.py b/numpydoc/tests/test_docscrape.py index 5b6a326e..3484ea2d 100644 --- a/numpydoc/tests/test_docscrape.py +++ b/numpydoc/tests/test_docscrape.py @@ -209,6 +209,22 @@ def test_returnyield(): """ assert_raises(ValueError, NumpyDocString, doc_text) + +def test_section_twice(): + doc_text = """ +Test having a section Notes twice + +Notes +----- +See the next note for more information + +Notes +----- +That should break... +""" + assert_raises(ValueError, NumpyDocString, doc_text) + + def test_notes(): assert doc['Notes'][0].startswith('Instead') assert doc['Notes'][-1].endswith('definite.')