Sphinx: Putting citation in list-table gives make man error

Created on 28 Jun 2020  路  3Comments  路  Source: sphinx-doc/sphinx

Describe the bug
Putting citation in list-table gives make man error

To Reproduce
Steps to reproduce the behavior:

  1. install Package

    $ pip install sphinx
    $ sphinx-quickstart

    Read result2.txt for details

  2. Write the following code in index.rst.

test citation
=============

.. list-table::
   :widths: 1

   * - .. [title]

[title]_
  1. When I run make man , I get an error.

Environment info

  • OS: Linux(5.7.5-gentoo)
  • Python version: [3.8.2]
  • Sphinx version: [3.1.1]
  • Sphinx extensions: [none]
  • Extra tools: [none]

result2.txt

bug docutils

All 3 comments

result2.txt is...

enviroment: 5.7.5-gentoo

$ python -V
Python 3.8.2

$ pip freeze
alabaster==0.7.12
Babel==2.8.0
certifi==2020.6.20
chardet==3.0.4
docutils==0.16
idna==2.10
imagesize==1.2.0
Jinja2==2.11.2
MarkupSafe==1.1.1
packaging==20.4
Pygments==2.6.1
pyparsing==2.4.7
pytz==2020.1
requests==2.24.0
six==1.15.0
snowballstemmer==2.0.0
Sphinx==3.1.1
sphinxcontrib-applehelp==1.0.2
sphinxcontrib-devhelp==1.0.2
sphinxcontrib-htmlhelp==1.0.3
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==1.0.3
sphinxcontrib-serializingh


$ sphinx-quickstart -q -p test -a test -v 1
$ echo -e "test citation\n=============\n\n.. list-table::\n   :widths: 1\n\n   * - .. [title]\n\n[title]_" > index.rst
$ make html

$ make html
Running Sphinx v3.1.1
making output directory... done
building [mo]: targets for 0 po files that are out of date
building [html]: targets for 1 source files that are out of date
updating environment: [new config] 1 added, 0 changed, 0 removed
reading sources... [100%] index                                                                                                                                                                                                        looking for now-outdated files... none found
pickling environment... done
checking consistency... done
preparing documents... done
writing output... [100%] index                                                                                                                                                                                                         generating indices...  genindexdone
writing additional pages...  searchdone
copying static files... ... done
copying extra files... done
dumping search index in English (code: en)... done
dumping object inventory... done
build succeeded.

The HTML pages are in _build/html.

$ make man
Running Sphinx v3.1.1
making output directory... done
loading pickled environment... done
building [mo]: targets for 0 po files that are out of date
building [man]: all manpages
updating environment: 0 added, 0 changed, 0 removed
looking for now-outdated files... none found
writing... testcitation.1 { } failed

Exception occurred:
  File "/home/usaturn/.venv/test/lib/python3.8/site-packages/docutils/writers/manpage.py", line 478, in visit_citation
    num, text = node.astext().split(None, 1)
ValueError: not enough values to unpack (expected 2, got 1)
The full traceback has been saved in /tmp/sphinx-err-4u1h2dj6.log, if you want to report the issue to the developers.
Please also report this if it was a user error, so that a better error message can be provided next time.
A bug report can be filed in the tracker at <https://github.com/sphinx-doc/sphinx/issues>. Thanks!
make: *** [Makefile:20: man] Error 2


$ cat /tmp/sphinx-err-4u1h2dj6.log
# Sphinx version: 3.1.1
# Python version: 3.8.2 (CPython)
# Docutils version: 0.16 release
# Jinja2 version: 2.11.2
# Last messages:
#   building [mo]: targets for 0 po files that are out of date
#   building [man]: all manpages
#   updating environment:
#   0 added, 0 changed, 0 removed
#   looking for now-outdated files...
#   none found
#   writing...
#   testcitation.1 {
#   }
#   failed
# Loaded extensions:
#   sphinx.ext.mathjax (3.1.1) from /home/usaturn/.venv/test/lib/python3.8/site-packages/sphinx/ext/mathjax.py
#   sphinxcontrib.applehelp (1.0.2) from /home/usaturn/.venv/test/lib/python3.8/site-packages/sphinxcontrib/applehelp/__init__.py
#   sphinxcontrib.devhelp (1.0.2) from /home/usaturn/.venv/test/lib/python3.8/site-packages/sphinxcontrib/devhelp/__init__.py
#   sphinxcontrib.htmlhelp (1.0.3) from /home/usaturn/.venv/test/lib/python3.8/site-packages/sphinxcontrib/htmlhelp/__init__.py
#   sphinxcontrib.serializinghtml (1.1.4) from /home/usaturn/.venv/test/lib/python3.8/site-packages/sphinxcontrib/serializinghtml/__init__.py
#   sphinxcontrib.qthelp (1.0.3) from /home/usaturn/.venv/test/lib/python3.8/site-packages/sphinxcontrib/qthelp/__init__.py
#   alabaster (0.7.12) from /home/usaturn/.venv/test/lib/python3.8/site-packages/alabaster/__init__.py
Traceback (most recent call last):
  File "/home/usaturn/.venv/test/lib/python3.8/site-packages/sphinx/cmd/build.py", line 280, in build_main
    app.build(args.force_all, filenames)
  File "/home/usaturn/.venv/test/lib/python3.8/site-packages/sphinx/application.py", line 348, in build
    self.builder.build_update()
  File "/home/usaturn/.venv/test/lib/python3.8/site-packages/sphinx/builders/__init__.py", line 294, in build_update
    self.build(['__all__'], to_build)
  File "/home/usaturn/.venv/test/lib/python3.8/site-packages/sphinx/builders/__init__.py", line 361, in build
    self.write(docnames, list(updated_docnames), method)
  File "/home/usaturn/.venv/test/lib/python3.8/site-packages/sphinx/util/__init__.py", line 725, in wrapper
    return f(*args, **kwargs)
  File "/home/usaturn/.venv/test/lib/python3.8/site-packages/sphinx/builders/manpage.py", line 100, in write
    docwriter.write(largetree, destination)
  File "/home/usaturn/.venv/test/lib/python3.8/site-packages/docutils/writers/__init__.py", line 78, in write
    self.translate()
  File "/home/usaturn/.venv/test/lib/python3.8/site-packages/sphinx/writers/manpage.py", line 45, in translate
    self.document.walkabout(visitor)
  File "/home/usaturn/.venv/test/lib/python3.8/site-packages/docutils/nodes.py", line 214, in walkabout
    if child.walkabout(visitor):
  File "/home/usaturn/.venv/test/lib/python3.8/site-packages/docutils/nodes.py", line 214, in walkabout
    if child.walkabout(visitor):
  File "/home/usaturn/.venv/test/lib/python3.8/site-packages/docutils/nodes.py", line 214, in walkabout
    if child.walkabout(visitor):
  [Previous line repeated 4 more times]
  File "/home/usaturn/.venv/test/lib/python3.8/site-packages/docutils/nodes.py", line 206, in walkabout
    visitor.dispatch_visit(self)
  File "/home/usaturn/.venv/test/lib/python3.8/site-packages/sphinx/util/docutils.py", line 468, in dispatch_visit
    method(node)
  File "/home/usaturn/.venv/test/lib/python3.8/site-packages/docutils/writers/manpage.py", line 478, in visit_citation
    num, text = node.astext().split(None, 1)
ValueError: not enough values to unpack (expected 2, got 1)

It seems an empty citation definition hits the docutils' bug. I got the same error from this command:

$ echo '.. [title]' | rst2man.py --traceback
Traceback (most recent call last):
  File "/Users/tkomiya/work/tmp/bin/rst2man.py", line 26, in <module>
    publish_cmdline(writer=manpage.Writer(), description=description)
  File "/Users/tkomiya/work/tmp/lib/python3.8/site-packages/docutils/core.py", line 352, in publish_cmdline
    output = pub.publish(
  File "/Users/tkomiya/work/tmp/lib/python3.8/site-packages/docutils/core.py", line 219, in publish
    output = self.writer.write(self.document, self.destination)
  File "/Users/tkomiya/work/tmp/lib/python3.8/site-packages/docutils/writers/__init__.py", line 78, in write
    self.translate()
  File "/Users/tkomiya/work/tmp/lib/python3.8/site-packages/docutils/writers/manpage.py", line 107, in translate
    self.document.walkabout(visitor)
  File "/Users/tkomiya/work/tmp/lib/python3.8/site-packages/docutils/nodes.py", line 180, in walkabout
    if child.walkabout(visitor):
  File "/Users/tkomiya/work/tmp/lib/python3.8/site-packages/docutils/nodes.py", line 172, in walkabout
    visitor.dispatch_visit(self)
  File "/Users/tkomiya/work/tmp/lib/python3.8/site-packages/docutils/nodes.py", line 1900, in dispatch_visit
    return method(node)
  File "/Users/tkomiya/work/tmp/lib/python3.8/site-packages/docutils/writers/manpage.py", line 469, in visit_citation
    num, text = node.astext().split(None, 1)
ValueError: not enough values to unpack (expected 2, got 1)

I post a patch to docutils' list: https://sourceforge.net/p/docutils/patches/168/
Please track this ticket.
Closing.

Was this page helpful?
0 / 5 - 0 ratings