描述
Describe the bug
It seems like the text builder can't handle all of the same tables that the html builder can. It is apparently possible for Table.colwidth elements to have a string value of 'auto', but Table.cell_width() assumes integer values.
...
File ".../docutils/nodes.py", line 199, in walkabout
visitor.dispatch_departure(self)
File ".../sphinx/util/docutils.py", line 599, in dispatch_departure
method(node)
File ".../sphinx/writers/text.py", line 903, in depart_table
self.add_text(str(self.table))
^^^^^^^^^^^^^^^
File ".../sphinx/writers/text.py", line 202, in __str__
self.rewrap()
File ".../sphinx/writers/text.py", line 181, in rewrap
cell.wrap(width=self.cell_width(cell, self.colwidth))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File ".../sphinx/writers/text.py", line 163, in cell_width
width += source[cell.col + i]
TypeError: unsupported operand type(s) for +=: 'int' and 'str'
The problem occurs with a table provided through the Breathe extension, but the html builder handles it just fine.
How to Reproduce
I'm sorry for the complexity of the example. I don't know what determines whether a table node has column widths that are integers versus 'auto'. In pure RsT parts of my doctree, a Table produces Table.colwidth == [50, 50]. For the table that comes through Breathe, I see Table.colwidth = ['auto', 'auto'], which builds fine for the html builder, but can't be processed by the text builder.
- Create a doxygen comment block with a table using syntax like the following.
*
* colA | colB
* ------- | -------
* term1 | definition1
* term2 | definition2
- Produce Doxygen XML. Process with Breathe with a call like
sphinx-build -b text . output/text
Environment Information
Platform: darwin; (macOS-14.4.1-arm64-arm-64bit)
Python version: 3.11.7 (main, Dec 4 2023, 18:10:11) [Clang 15.0.0 (clang-1500.1.0.2.5)])
Python implementation: CPython
Sphinx version: 7.2.6
Docutils version: 0.20.1
Jinja2 version: 3.1.3
Pygments version: 2.17.2
Sphinx extensions
notably: breathe (4.35.0)
Additional context
The content that is being processed when the error occurs is extracted by breathe (4.35.0) from XML produced by Doxygen 1.10.0.