Commits

Anonymous committed e97be5c

Fix an exception introduced by b69b59480cba for __init__ with no docstring.

Comments (0)

Files changed (2)

sphinx/ext/autodoc.py

                 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':

tests/test_autodoc.py

         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():