Thomas, Ok, I have finally had time to review your patch and test it. Sorry this took me a while.
This bug is now linked with 560624, 560659 and 560606, which are FTBFS bugs for python-couchdb, dbus-python and pymvpa. I was able to reproduce the build problems with those packages using python-epydoc 3.0.1-3 and python-docutils 0.6-2 (both from unstable). After applying your patch, the build problems went away for python-couchdb and dbus-python. The pymvpa build exposed one other piece of code where a ".data" element is referenced, so I made a similar change there. (A new patch is attached.) I can't confirm that the documentation looks exactly correct in each of the packages I tested, but I spot-checked it and it does look reasonable. I haven't heard back from Edward (upstream), so that leaves it up to me. The patch shouldn't have any impact on behavior except when the ".data" attribute is missing, so it feels fairly safe. I tend to think the result with the patch in place is much better than just blowing up. So, I am going to apply it for Debian version 3.0.1-4, which I will upload later tonite. I will also update the SF bug to reference this Debian bug (and the patch), in case Edward wants to put into the upstream release. To the other Debian maintainers: please let me know if you see any problems with the documentation that has been generated for your packages. I can always fall this change back if needed. Thanks, KEN -- Kenneth J. Pronovici <prono...@ieee.org> http://www.cedar-solutions.com/
Index: epydoc/markup/restructuredtext.py =================================================================== RCS file: /opt/public/cvs/debian/epydoc/epydoc/markup/restructuredtext.py,v retrieving revision 1.1.1.4 diff -u -r1.1.1.4 restructuredtext.py --- epydoc/markup/restructuredtext.py 28 Jan 2008 18:15:33 -0000 1.1.1.4 +++ epydoc/markup/restructuredtext.py 31 Dec 2009 04:28:30 -0000 @@ -304,13 +304,14 @@ # Extract the first sentence. for child in node: if isinstance(child, docutils.nodes.Text): - m = self._SUMMARY_RE.match(child.data) - if m: - summary_pieces.append(docutils.nodes.Text(m.group(1))) - other = child.data[m.end():] - if other and not other.isspace(): - self.other_docs = True - break + if hasattr(child, 'data'): + m = self._SUMMARY_RE.match(child.data) + if m: + summary_pieces.append(docutils.nodes.Text(m.group(1))) + other = child.data[m.end():] + if other and not other.isspace(): + self.other_docs = True + break summary_pieces.append(child) summary_doc = self.document.copy() # shallow copy @@ -489,10 +490,11 @@ if (len(fbody[0]) > 0 and isinstance(fbody[0][0], docutils.nodes.Text)): child = fbody[0][0] - if child.data[:1] in ':-': - child.data = child.data[1:].lstrip() - elif child.data[:2] in (' -', ' :'): - child.data = child.data[2:].lstrip() + if hasattr(child, 'data'): + if child.data[:1] in ':-': + child.data = child.data[1:].lstrip() + elif child.data[:2] in (' -', ' :'): + child.data = child.data[2:].lstrip() # Wrap the field body, and add a new field self._add_field(tagname, arg, fbody)