From c92e9a29ad1a3f23505d9b6e73f5a66c4be642d6 Mon Sep 17 00:00:00 2001 From: Ben Darnell Date: Mon, 20 Jan 2014 11:54:51 -0500 Subject: Fix an exception introduced by b69b59480cba for __init__ with no docstring. --- sphinx/ext/autodoc.py | 5 +++-- tests/test_autodoc.py | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/sphinx/ext/autodoc.py b/sphinx/ext/autodoc.py index c454641b..d07014fa 100644 --- a/sphinx/ext/autodoc.py +++ b/sphinx/ext/autodoc.py @@ -1085,8 +1085,9 @@ class ClassDocumenter(ModuleLevelDocumenter): initdocstring = self.get_attr( self.get_attr(self.object, '__init__', None), '__doc__') # for new-style classes, no __init__ means default __init__ - if (initdocstring == object.__init__.__doc__ or # for pypy - initdocstring.strip() == object.__init__.__doc__): #for !pypy + if (initdocstring is not None and + (initdocstring == object.__init__.__doc__ or # for pypy + initdocstring.strip() == object.__init__.__doc__)): #for !pypy initdocstring = None if initdocstring: if content == 'init': diff --git a/tests/test_autodoc.py b/tests/test_autodoc.py index 3735a7b6..3a80e7fc 100644 --- a/tests/test_autodoc.py +++ b/tests/test_autodoc.py @@ -348,6 +348,22 @@ def test_get_doc(): directive.env.config.autoclass_content = 'both' assert getdocl('class', F) == ['Class docstring'] + # class has __init__ method with no docstring + class G(object): + """Class docstring""" + def __init__(self): + pass + + # docstring in the __init__ method of base class will not be used + for f in (False, True): + directive.env.config.autodoc_docstring_signature = f + directive.env.config.autoclass_content = 'class' + assert getdocl('class', G) == ['Class docstring'] + directive.env.config.autoclass_content = 'init' + assert getdocl('class', G) == ['Class docstring'] + directive.env.config.autoclass_content = 'both' + assert getdocl('class', G) == ['Class docstring'] + @with_setup(setup_test) def test_docstring_processing(): -- cgit v1.2.1