You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
(5) |
May
(27) |
Jun
(22) |
Jul
(72) |
Aug
(82) |
Sep
(86) |
Oct
(138) |
Nov
(100) |
Dec
(62) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(122) |
Feb
(147) |
Mar
(92) |
Apr
(82) |
May
(101) |
Jun
(153) |
Jul
(37) |
Aug
(34) |
Sep
(46) |
Oct
(46) |
Nov
(6) |
Dec
(38) |
| 2004 |
Jan
(64) |
Feb
(81) |
Mar
(36) |
Apr
(194) |
May
(329) |
Jun
(272) |
Jul
(68) |
Aug
(74) |
Sep
(150) |
Oct
(57) |
Nov
(62) |
Dec
(63) |
| 2005 |
Jan
(78) |
Feb
(30) |
Mar
(137) |
Apr
(78) |
May
(54) |
Jun
(122) |
Jul
(72) |
Aug
(110) |
Sep
(80) |
Oct
(75) |
Nov
(125) |
Dec
(79) |
| 2006 |
Jan
(100) |
Feb
(15) |
Mar
(41) |
Apr
(67) |
May
(30) |
Jun
(11) |
Jul
(14) |
Aug
(22) |
Sep
(20) |
Oct
(14) |
Nov
(11) |
Dec
(15) |
| 2007 |
Jan
(17) |
Feb
(16) |
Mar
(35) |
Apr
(21) |
May
(33) |
Jun
(50) |
Jul
(12) |
Aug
(7) |
Sep
(2) |
Oct
(6) |
Nov
(5) |
Dec
(2) |
| 2008 |
Jan
(14) |
Feb
(20) |
Mar
(35) |
Apr
(9) |
May
(57) |
Jun
(21) |
Jul
(42) |
Aug
(4) |
Sep
(13) |
Oct
(76) |
Nov
(40) |
Dec
(55) |
| 2009 |
Jan
(26) |
Feb
(15) |
Mar
(3) |
Apr
(67) |
May
(32) |
Jun
(39) |
Jul
(59) |
Aug
(31) |
Sep
(59) |
Oct
(64) |
Nov
(21) |
Dec
(10) |
| 2010 |
Jan
(21) |
Feb
(3) |
Mar
(116) |
Apr
(33) |
May
(9) |
Jun
(28) |
Jul
(21) |
Aug
(23) |
Sep
(146) |
Oct
(70) |
Nov
(31) |
Dec
(57) |
| 2011 |
Jan
(33) |
Feb
(22) |
Mar
(11) |
Apr
(21) |
May
(51) |
Jun
(47) |
Jul
(35) |
Aug
(26) |
Sep
(25) |
Oct
(34) |
Nov
(61) |
Dec
(51) |
| 2012 |
Jan
(75) |
Feb
(31) |
Mar
(26) |
Apr
(16) |
May
(24) |
Jun
(24) |
Jul
(31) |
Aug
(46) |
Sep
(36) |
Oct
(28) |
Nov
(37) |
Dec
(21) |
| 2013 |
Jan
(16) |
Feb
(56) |
Mar
(31) |
Apr
(44) |
May
(45) |
Jun
(29) |
Jul
(38) |
Aug
(18) |
Sep
(12) |
Oct
(16) |
Nov
(21) |
Dec
(11) |
| 2014 |
Jan
(13) |
Feb
(14) |
Mar
(28) |
Apr
(7) |
May
(72) |
Jun
(33) |
Jul
(21) |
Aug
(1) |
Sep
(6) |
Oct
(14) |
Nov
(18) |
Dec
(22) |
| 2015 |
Jan
(23) |
Feb
(108) |
Mar
(76) |
Apr
(114) |
May
(60) |
Jun
(9) |
Jul
(8) |
Aug
(9) |
Sep
(42) |
Oct
(9) |
Nov
|
Dec
(7) |
| 2016 |
Jan
(6) |
Feb
(15) |
Mar
(7) |
Apr
|
May
(33) |
Jun
(3) |
Jul
(19) |
Aug
(12) |
Sep
(6) |
Oct
(16) |
Nov
(17) |
Dec
(125) |
| 2017 |
Jan
(66) |
Feb
(98) |
Mar
(29) |
Apr
(32) |
May
(63) |
Jun
(98) |
Jul
(26) |
Aug
(33) |
Sep
(19) |
Oct
(77) |
Nov
(31) |
Dec
(27) |
| 2018 |
Jan
(32) |
Feb
(11) |
Mar
(5) |
Apr
(12) |
May
(4) |
Jun
(9) |
Jul
(9) |
Aug
(13) |
Sep
(11) |
Oct
(6) |
Nov
(23) |
Dec
(2) |
| 2019 |
Jan
(26) |
Feb
(12) |
Mar
(20) |
Apr
(18) |
May
(7) |
Jun
(22) |
Jul
(81) |
Aug
(129) |
Sep
(32) |
Oct
(18) |
Nov
(11) |
Dec
(44) |
| 2020 |
Jan
(19) |
Feb
(10) |
Mar
(38) |
Apr
(4) |
May
(9) |
Jun
(15) |
Jul
(29) |
Aug
(79) |
Sep
(12) |
Oct
(22) |
Nov
(10) |
Dec
(37) |
| 2021 |
Jan
(16) |
Feb
(14) |
Mar
(20) |
Apr
(100) |
May
(21) |
Jun
(19) |
Jul
(13) |
Aug
(13) |
Sep
(37) |
Oct
(112) |
Nov
(64) |
Dec
(22) |
| 2022 |
Jan
(209) |
Feb
(38) |
Mar
(11) |
Apr
(10) |
May
(55) |
Jun
(104) |
Jul
(35) |
Aug
(10) |
Sep
(21) |
Oct
(21) |
Nov
(50) |
Dec
(12) |
| 2023 |
Jan
(6) |
Feb
|
Mar
(3) |
Apr
(41) |
May
(48) |
Jun
(9) |
Jul
(6) |
Aug
(25) |
Sep
(3) |
Oct
(22) |
Nov
(56) |
Dec
(12) |
| 2024 |
Jan
(5) |
Feb
(5) |
Mar
(38) |
Apr
(62) |
May
(12) |
Jun
(10) |
Jul
(3) |
Aug
(59) |
Sep
(2) |
Oct
(36) |
Nov
(14) |
Dec
(3) |
| 2025 |
Jan
(5) |
Feb
(19) |
Mar
(7) |
Apr
(65) |
May
(11) |
Jun
(13) |
Jul
(46) |
Aug
(27) |
Sep
(33) |
Oct
(1) |
Nov
(2) |
Dec
|
|
From: Günter M. <mi...@us...> - 2025-08-15 22:38:24
|
Could you re-try with a checkout or snapshot of [r10204] that introduces independent section title style hierarchies for nested parsing? --- **[bugs:#508] qemu build problem after docutils update to 0.22** **Status:** open **Created:** Mon Aug 04, 2025 08:23 AM UTC by Thomas Klausner **Last Updated:** Fri Aug 15, 2025 09:24 AM UTC **Owner:** nobody After updating docutils in pkgsrc to 0.22 (with sphinx 8.2.3), qemu 10.0.3 (https://gitlab.com/qemu-project/qemu) stopped building. The output is not very clear: ``` [5596/6204] Generating docs/QEMU manual with a custom command FAILED: [code=2] docs/docs.stamp /scratch/emulators/qemu/work/.tools/bin/env CONFDIR=/usr/pkg/etc/qemu/qemu /scratch/emulators/qemu/work/qemu-10.0.3/build/pyvenv/bin/sphinx-build -q -j auto -Dversion=10.0.3 -Drelease= -Ddepfile=docs/docs.d -Ddepfile_sta mp=docs/docs.stamp -b html -d /scratch/emulators/qemu/work/qemu-10.0.3/build/docs/manual.p /scratch/emulators/qemu/work/qemu-10.0.3/docs /scratch/emulators/qemu/work/qemu-10.0.3/build/docs/manual Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:70: CRITICAL: Inconsistent title style: skip from level 1 to 3. Valid requests ^^^^^^^^^^^^^^ Established title styles: =/= - ^ [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:73: CRITICAL: Inconsistent title style: skip from level 1 to 4. 10:17:35 [41/1829] Clock management: """"""""""""""""" Established title styles: =/= - ^ " [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:107: CRITICAL: Inconsistent title style: skip from level 1 to 4. PIO and memory access: """""""""""""""""""""" Established title styles: =/= - ^ " [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:215: CRITICAL: Inconsistent title style: skip from level 1 to 4. IRQ management: """"""""""""""" Established title styles: =/= - ^ " [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:239: CRITICAL: Inconsistent title style: skip from level 1 to 4. Setting interrupt level: """""""""""""""""""""""" Established title styles: =/= - ^ " [docutils] Sphinx parallel build error! Versions ======== * Platform: netbsd11; (NetBSD-11.99.1-amd64-x86_64-64bit-ELF) * Python version: 3.13.5 (CPython) * Sphinx version: 8.2.3 * Docutils version: 0.22 * Jinja2 version: 3.1.6 * Pygments version: 2.19.2 Last Messages ============= reading sources... [ 91%] system/s390x/protvirt .. system/target-loongarch reading sources... [ 94%] system/target-m68k .. system/target-sparc64 reading sources... [ 97%] system/target-xtensa .. tools/qemu-nbd Loaded Extensions ================= * sphinx.ext.mathjax (8.2.3) * alabaster (1.0.0) * sphinxcontrib.applehelp (2.0.0) * sphinxcontrib.devhelp (2.0.0) * sphinxcontrib.htmlhelp (2.1.0) * sphinxcontrib.serializinghtml (2.0.0) * sphinxcontrib.qthelp (2.0.0) * depfile (1.0) * hxtool (1.0) * kerneldoc (1.0) * qapi_domain (1.0) * qapidoc (2.0) * qmp_lexer (unknown version) * dbusdoc (1.0) * sphinxcontrib.jquery (4.1) * sphinx_rtd_theme (unknown version) Traceback ========= File "/usr/pkg/lib/python3.13/site-packages/sphinx/util/parallel.py", line 137, in _join_one raise SphinxParallelError(*result) sphinx.errors.SphinxParallelError: TypeError: unsupported operand type(s) for +: 'NoneType' and 'list' The full traceback has been saved in: /tmp/sphinx-err-gj6pt4nj.log To report this error to the developers, please open an issue at <." rel="nofollow">https://github.com/sphinx-doc/sphinx/issues/>. Thanks! Please also report this if it was a user error, so that a better error message can be provided next time. ``` The full traceback from the log lists docutils code as the origin of the breakage: ``` Traceback ========= (Error in parallel process) Traceback (most recent call last): File "/usr/pkg/lib/python3.13/site-packages/sphinx/util/parallel.py", line 83, in _process ret = func(arg) # type: ignore[call-arg] File "/usr/pkg/lib/python3.13/site-packages/sphinx/builders/__init__.py", line 603, in read_process self.read_doc(docname, _cache=False) ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/builders/__init__.py", line 648, in read_doc publisher.publish() ~~~~~~~~~~~~~~~~~^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/core.py", line 269, in publish self.document = self.reader.read(self.source, self.parser, ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^ self.settings) ^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/io.py", line 103, in read self.parse() ~~~~~~~~~~^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/readers/__init__.py", line 101, in parse self.parser.parse(self.input, document) ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/parsers.py", line 86, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 165, in run results = StateMachineWS.run(self, input_lines, input_offset, input_source=document['source']) File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 235, in run context, next_state, result = self.check_line( ~~~~~~~~~~~~~~~^ context, state, transitions) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 447, in check_line return method(match, context, next_state) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2356, in explicit_markup self.explicit_list(blank_finish) ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2381, in explicit_list newline_offset, blank_finish = self.nested_list_parse( ~~~~~~~~~~~~~~~~~~~~~~^ self.state_machine.input_lines[offset:], ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...<2 lines>... blank_finish=blank_finish, ^^^^^^^^^^^^^^^^^^^^^^^^^^ match_titles=self.state_machine.match_titles) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 312, in nested_list_parse state_machine.run(block, input_offset, memo=self.memo, ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ node=node, match_titles=match_titles) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 191, in run results = StateMachineWS.run(self, input_lines, input_offset) File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 235, in run context, next_state, result = self.check_line( ~~~~~~~~~~~~~~~^ context, state, transitions) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 447, in check_line return method(match, context, next_state) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2659, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2366, in explicit_construct return method(self, expmatch) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2103, in directive return self.run_directive( ~~~~~~~~~~~~~~~~~~^ directive_class, match, type_name, option_presets) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2153, in run_directive result = directive_instance.run() File "/scratch/emulators/qemu/work/qemu-10.0.3/docs/sphinx/qapidoc.py", line 620, in run contentnode = self.transmogrify(schema) File "/scratch/emulators/qemu/work/qemu-10.0.3/docs/sphinx/qapidoc.py", line 549, in transmogrify nested_parse_with_titles(self.state, content, contentnode) ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/util/nodes.py", line 378, in nested_parse_with_titles ret = state.nested_parse(content, content_offset, node, match_titles=True) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 275, in nested_parse state_machine.run(block, input_offset, memo=self.memo, ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ node=node, match_titles=match_titles) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 191, in run results = StateMachineWS.run(self, input_lines, input_offset) File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 235, in run context, next_state, result = self.check_line( ~~~~~~~~~~~~~~~^ context, state, transitions) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 447, in check_line return method(match, context, next_state) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 3024, in text self.section(title.lstrip(), source, style, lineno + 1, messages) ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 321, in section self.new_subsection(title, lineno, messages) ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 370, in new_subsection self.parent += section_node File "/usr/pkg/lib/python3.13/site-packages/docutils/nodes.py", line 736, in __radd__ return other + self.children ~~~~~~^~~~~~~~~~~~~~~ TypeError: unsupported operand type(s) for +: 'NoneType' and 'list' ``` Even with the "CRITICAL: Inconsistent title style" problems fixed, the build stops. Any ideas what the problem is or how to fix it? Thanks. --- Sent from sourceforge.net because doc...@li... is subscribed to https://sourceforge.net/p/docutils/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/docutils/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Günter M. <mi...@us...> - 2025-08-15 06:54:34
|
Looking at `docs/sphinx/kerneldoc.py`, I see that it uses Docutil's `RSTState.nested_parse()` which (up to now) forces a consistent title style hierarchy. OTOH, *quapidoc* uses Sphinx's `nested_parse_with_titles()` that starts a new title style hierarchy. Could you check, if the remaining CRITICAL errors also show up with Docutils 0.21? --- **[bugs:#508] qemu build problem after docutils update to 0.22** **Status:** open **Created:** Mon Aug 04, 2025 08:23 AM UTC by Thomas Klausner **Last Updated:** Thu Aug 14, 2025 07:44 PM UTC **Owner:** nobody After updating docutils in pkgsrc to 0.22 (with sphinx 8.2.3), qemu 10.0.3 (https://gitlab.com/qemu-project/qemu) stopped building. The output is not very clear: ``` [5596/6204] Generating docs/QEMU manual with a custom command FAILED: [code=2] docs/docs.stamp /scratch/emulators/qemu/work/.tools/bin/env CONFDIR=/usr/pkg/etc/qemu/qemu /scratch/emulators/qemu/work/qemu-10.0.3/build/pyvenv/bin/sphinx-build -q -j auto -Dversion=10.0.3 -Drelease= -Ddepfile=docs/docs.d -Ddepfile_sta mp=docs/docs.stamp -b html -d /scratch/emulators/qemu/work/qemu-10.0.3/build/docs/manual.p /scratch/emulators/qemu/work/qemu-10.0.3/docs /scratch/emulators/qemu/work/qemu-10.0.3/build/docs/manual Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:70: CRITICAL: Inconsistent title style: skip from level 1 to 3. Valid requests ^^^^^^^^^^^^^^ Established title styles: =/= - ^ [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:73: CRITICAL: Inconsistent title style: skip from level 1 to 4. 10:17:35 [41/1829] Clock management: """"""""""""""""" Established title styles: =/= - ^ " [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:107: CRITICAL: Inconsistent title style: skip from level 1 to 4. PIO and memory access: """""""""""""""""""""" Established title styles: =/= - ^ " [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:215: CRITICAL: Inconsistent title style: skip from level 1 to 4. IRQ management: """"""""""""""" Established title styles: =/= - ^ " [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:239: CRITICAL: Inconsistent title style: skip from level 1 to 4. Setting interrupt level: """""""""""""""""""""""" Established title styles: =/= - ^ " [docutils] Sphinx parallel build error! Versions ======== * Platform: netbsd11; (NetBSD-11.99.1-amd64-x86_64-64bit-ELF) * Python version: 3.13.5 (CPython) * Sphinx version: 8.2.3 * Docutils version: 0.22 * Jinja2 version: 3.1.6 * Pygments version: 2.19.2 Last Messages ============= reading sources... [ 91%] system/s390x/protvirt .. system/target-loongarch reading sources... [ 94%] system/target-m68k .. system/target-sparc64 reading sources... [ 97%] system/target-xtensa .. tools/qemu-nbd Loaded Extensions ================= * sphinx.ext.mathjax (8.2.3) * alabaster (1.0.0) * sphinxcontrib.applehelp (2.0.0) * sphinxcontrib.devhelp (2.0.0) * sphinxcontrib.htmlhelp (2.1.0) * sphinxcontrib.serializinghtml (2.0.0) * sphinxcontrib.qthelp (2.0.0) * depfile (1.0) * hxtool (1.0) * kerneldoc (1.0) * qapi_domain (1.0) * qapidoc (2.0) * qmp_lexer (unknown version) * dbusdoc (1.0) * sphinxcontrib.jquery (4.1) * sphinx_rtd_theme (unknown version) Traceback ========= File "/usr/pkg/lib/python3.13/site-packages/sphinx/util/parallel.py", line 137, in _join_one raise SphinxParallelError(*result) sphinx.errors.SphinxParallelError: TypeError: unsupported operand type(s) for +: 'NoneType' and 'list' The full traceback has been saved in: /tmp/sphinx-err-gj6pt4nj.log To report this error to the developers, please open an issue at <." rel="nofollow">https://github.com/sphinx-doc/sphinx/issues/>. Thanks! Please also report this if it was a user error, so that a better error message can be provided next time. ``` The full traceback from the log lists docutils code as the origin of the breakage: ``` Traceback ========= (Error in parallel process) Traceback (most recent call last): File "/usr/pkg/lib/python3.13/site-packages/sphinx/util/parallel.py", line 83, in _process ret = func(arg) # type: ignore[call-arg] File "/usr/pkg/lib/python3.13/site-packages/sphinx/builders/__init__.py", line 603, in read_process self.read_doc(docname, _cache=False) ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/builders/__init__.py", line 648, in read_doc publisher.publish() ~~~~~~~~~~~~~~~~~^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/core.py", line 269, in publish self.document = self.reader.read(self.source, self.parser, ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^ self.settings) ^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/io.py", line 103, in read self.parse() ~~~~~~~~~~^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/readers/__init__.py", line 101, in parse self.parser.parse(self.input, document) ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/parsers.py", line 86, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 165, in run results = StateMachineWS.run(self, input_lines, input_offset, input_source=document['source']) File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 235, in run context, next_state, result = self.check_line( ~~~~~~~~~~~~~~~^ context, state, transitions) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 447, in check_line return method(match, context, next_state) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2356, in explicit_markup self.explicit_list(blank_finish) ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2381, in explicit_list newline_offset, blank_finish = self.nested_list_parse( ~~~~~~~~~~~~~~~~~~~~~~^ self.state_machine.input_lines[offset:], ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...<2 lines>... blank_finish=blank_finish, ^^^^^^^^^^^^^^^^^^^^^^^^^^ match_titles=self.state_machine.match_titles) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 312, in nested_list_parse state_machine.run(block, input_offset, memo=self.memo, ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ node=node, match_titles=match_titles) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 191, in run results = StateMachineWS.run(self, input_lines, input_offset) File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 235, in run context, next_state, result = self.check_line( ~~~~~~~~~~~~~~~^ context, state, transitions) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 447, in check_line return method(match, context, next_state) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2659, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2366, in explicit_construct return method(self, expmatch) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2103, in directive return self.run_directive( ~~~~~~~~~~~~~~~~~~^ directive_class, match, type_name, option_presets) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2153, in run_directive result = directive_instance.run() File "/scratch/emulators/qemu/work/qemu-10.0.3/docs/sphinx/qapidoc.py", line 620, in run contentnode = self.transmogrify(schema) File "/scratch/emulators/qemu/work/qemu-10.0.3/docs/sphinx/qapidoc.py", line 549, in transmogrify nested_parse_with_titles(self.state, content, contentnode) ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/util/nodes.py", line 378, in nested_parse_with_titles ret = state.nested_parse(content, content_offset, node, match_titles=True) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 275, in nested_parse state_machine.run(block, input_offset, memo=self.memo, ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ node=node, match_titles=match_titles) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 191, in run results = StateMachineWS.run(self, input_lines, input_offset) File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 235, in run context, next_state, result = self.check_line( ~~~~~~~~~~~~~~~^ context, state, transitions) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 447, in check_line return method(match, context, next_state) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 3024, in text self.section(title.lstrip(), source, style, lineno + 1, messages) ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 321, in section self.new_subsection(title, lineno, messages) ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 370, in new_subsection self.parent += section_node File "/usr/pkg/lib/python3.13/site-packages/docutils/nodes.py", line 736, in __radd__ return other + self.children ~~~~~~^~~~~~~~~~~~~~~ TypeError: unsupported operand type(s) for +: 'NoneType' and 'list' ``` Even with the "CRITICAL: Inconsistent title style" problems fixed, the build stops. Any ideas what the problem is or how to fix it? Thanks. --- Sent from sourceforge.net because doc...@li... is subscribed to https://sourceforge.net/p/docutils/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/docutils/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Günter M. <mi...@us...> - 2025-08-14 19:44:24
|
I am working on a fix... --- **[bugs:#508] qemu build problem after docutils update to 0.22** **Status:** open **Created:** Mon Aug 04, 2025 08:23 AM UTC by Thomas Klausner **Last Updated:** Thu Aug 14, 2025 09:26 AM UTC **Owner:** nobody After updating docutils in pkgsrc to 0.22 (with sphinx 8.2.3), qemu 10.0.3 (https://gitlab.com/qemu-project/qemu) stopped building. The output is not very clear: ``` [5596/6204] Generating docs/QEMU manual with a custom command FAILED: [code=2] docs/docs.stamp /scratch/emulators/qemu/work/.tools/bin/env CONFDIR=/usr/pkg/etc/qemu/qemu /scratch/emulators/qemu/work/qemu-10.0.3/build/pyvenv/bin/sphinx-build -q -j auto -Dversion=10.0.3 -Drelease= -Ddepfile=docs/docs.d -Ddepfile_sta mp=docs/docs.stamp -b html -d /scratch/emulators/qemu/work/qemu-10.0.3/build/docs/manual.p /scratch/emulators/qemu/work/qemu-10.0.3/docs /scratch/emulators/qemu/work/qemu-10.0.3/build/docs/manual Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:70: CRITICAL: Inconsistent title style: skip from level 1 to 3. Valid requests ^^^^^^^^^^^^^^ Established title styles: =/= - ^ [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:73: CRITICAL: Inconsistent title style: skip from level 1 to 4. 10:17:35 [41/1829] Clock management: """"""""""""""""" Established title styles: =/= - ^ " [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:107: CRITICAL: Inconsistent title style: skip from level 1 to 4. PIO and memory access: """""""""""""""""""""" Established title styles: =/= - ^ " [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:215: CRITICAL: Inconsistent title style: skip from level 1 to 4. IRQ management: """"""""""""""" Established title styles: =/= - ^ " [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:239: CRITICAL: Inconsistent title style: skip from level 1 to 4. Setting interrupt level: """""""""""""""""""""""" Established title styles: =/= - ^ " [docutils] Sphinx parallel build error! Versions ======== * Platform: netbsd11; (NetBSD-11.99.1-amd64-x86_64-64bit-ELF) * Python version: 3.13.5 (CPython) * Sphinx version: 8.2.3 * Docutils version: 0.22 * Jinja2 version: 3.1.6 * Pygments version: 2.19.2 Last Messages ============= reading sources... [ 91%] system/s390x/protvirt .. system/target-loongarch reading sources... [ 94%] system/target-m68k .. system/target-sparc64 reading sources... [ 97%] system/target-xtensa .. tools/qemu-nbd Loaded Extensions ================= * sphinx.ext.mathjax (8.2.3) * alabaster (1.0.0) * sphinxcontrib.applehelp (2.0.0) * sphinxcontrib.devhelp (2.0.0) * sphinxcontrib.htmlhelp (2.1.0) * sphinxcontrib.serializinghtml (2.0.0) * sphinxcontrib.qthelp (2.0.0) * depfile (1.0) * hxtool (1.0) * kerneldoc (1.0) * qapi_domain (1.0) * qapidoc (2.0) * qmp_lexer (unknown version) * dbusdoc (1.0) * sphinxcontrib.jquery (4.1) * sphinx_rtd_theme (unknown version) Traceback ========= File "/usr/pkg/lib/python3.13/site-packages/sphinx/util/parallel.py", line 137, in _join_one raise SphinxParallelError(*result) sphinx.errors.SphinxParallelError: TypeError: unsupported operand type(s) for +: 'NoneType' and 'list' The full traceback has been saved in: /tmp/sphinx-err-gj6pt4nj.log To report this error to the developers, please open an issue at <." rel="nofollow">https://github.com/sphinx-doc/sphinx/issues/>. Thanks! Please also report this if it was a user error, so that a better error message can be provided next time. ``` The full traceback from the log lists docutils code as the origin of the breakage: ``` Traceback ========= (Error in parallel process) Traceback (most recent call last): File "/usr/pkg/lib/python3.13/site-packages/sphinx/util/parallel.py", line 83, in _process ret = func(arg) # type: ignore[call-arg] File "/usr/pkg/lib/python3.13/site-packages/sphinx/builders/__init__.py", line 603, in read_process self.read_doc(docname, _cache=False) ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/builders/__init__.py", line 648, in read_doc publisher.publish() ~~~~~~~~~~~~~~~~~^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/core.py", line 269, in publish self.document = self.reader.read(self.source, self.parser, ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^ self.settings) ^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/io.py", line 103, in read self.parse() ~~~~~~~~~~^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/readers/__init__.py", line 101, in parse self.parser.parse(self.input, document) ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/parsers.py", line 86, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 165, in run results = StateMachineWS.run(self, input_lines, input_offset, input_source=document['source']) File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 235, in run context, next_state, result = self.check_line( ~~~~~~~~~~~~~~~^ context, state, transitions) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 447, in check_line return method(match, context, next_state) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2356, in explicit_markup self.explicit_list(blank_finish) ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2381, in explicit_list newline_offset, blank_finish = self.nested_list_parse( ~~~~~~~~~~~~~~~~~~~~~~^ self.state_machine.input_lines[offset:], ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...<2 lines>... blank_finish=blank_finish, ^^^^^^^^^^^^^^^^^^^^^^^^^^ match_titles=self.state_machine.match_titles) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 312, in nested_list_parse state_machine.run(block, input_offset, memo=self.memo, ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ node=node, match_titles=match_titles) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 191, in run results = StateMachineWS.run(self, input_lines, input_offset) File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 235, in run context, next_state, result = self.check_line( ~~~~~~~~~~~~~~~^ context, state, transitions) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 447, in check_line return method(match, context, next_state) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2659, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2366, in explicit_construct return method(self, expmatch) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2103, in directive return self.run_directive( ~~~~~~~~~~~~~~~~~~^ directive_class, match, type_name, option_presets) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2153, in run_directive result = directive_instance.run() File "/scratch/emulators/qemu/work/qemu-10.0.3/docs/sphinx/qapidoc.py", line 620, in run contentnode = self.transmogrify(schema) File "/scratch/emulators/qemu/work/qemu-10.0.3/docs/sphinx/qapidoc.py", line 549, in transmogrify nested_parse_with_titles(self.state, content, contentnode) ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/util/nodes.py", line 378, in nested_parse_with_titles ret = state.nested_parse(content, content_offset, node, match_titles=True) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 275, in nested_parse state_machine.run(block, input_offset, memo=self.memo, ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ node=node, match_titles=match_titles) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 191, in run results = StateMachineWS.run(self, input_lines, input_offset) File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 235, in run context, next_state, result = self.check_line( ~~~~~~~~~~~~~~~^ context, state, transitions) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 447, in check_line return method(match, context, next_state) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 3024, in text self.section(title.lstrip(), source, style, lineno + 1, messages) ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 321, in section self.new_subsection(title, lineno, messages) ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 370, in new_subsection self.parent += section_node File "/usr/pkg/lib/python3.13/site-packages/docutils/nodes.py", line 736, in __radd__ return other + self.children ~~~~~~^~~~~~~~~~~~~~~ TypeError: unsupported operand type(s) for +: 'NoneType' and 'list' ``` Even with the "CRITICAL: Inconsistent title style" problems fixed, the build stops. Any ideas what the problem is or how to fix it? Thanks. --- Sent from sourceforge.net because doc...@li... is subscribed to https://sourceforge.net/p/docutils/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/docutils/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Günter M. <mi...@us...> - 2025-08-13 16:55:16
|
- **Comment**: Did you check the generated HTML for missing section headings? While the build runs without crashing, there are still serious errors. Unfortunately, I cannot replicate or trace the reason. Here is what I found so far: The error is in docstrings that are collected by a Sphinx extension (qapidoc?). The error message tells, that the parser expects a consistent hierarchy of title adornment styles (i.e. sections in docstrings under/overlined with `*`, subsections underlined with `-`). Docstrings using this style (e.g. /scratch/emulators/qemu/work/qemu-10.0.3/qapi/pci.json) don't report an error any more. The mystery is, that Sphinx "autodoc" and (as far as I can see in the [source](https://gitlab.com/qemu-project/qemu/-/blob/master/docs/sphinx/qapidoc.py?ref_type=heads#L469)) "qapidoc" set up a "fresh" title style hierarchy for docstrings (with the auxiliary functions `nested_parse_with_titles()` rsp. `nested_parse_to_nodes()`). Nevertheless, the docstrings in `include/hw/qdev-core.h` and `system/qtest.c` are parsed with a non-empty section title style hierarchy. The traceback of a run with a "docutils.conf" file in the project directory that sets halt_level to 3 may give some hints. As a workaround, you may consider "normalizing" the section title adornments in `include/hw/qdev-core.h` and `system/qtest.c`. --- **[bugs:#508] qemu build problem after docutils update to 0.22** **Status:** open **Created:** Mon Aug 04, 2025 08:23 AM UTC by Thomas Klausner **Last Updated:** Mon Aug 11, 2025 09:20 PM UTC **Owner:** nobody After updating docutils in pkgsrc to 0.22 (with sphinx 8.2.3), qemu 10.0.3 (https://gitlab.com/qemu-project/qemu) stopped building. The output is not very clear: ``` [5596/6204] Generating docs/QEMU manual with a custom command FAILED: [code=2] docs/docs.stamp /scratch/emulators/qemu/work/.tools/bin/env CONFDIR=/usr/pkg/etc/qemu/qemu /scratch/emulators/qemu/work/qemu-10.0.3/build/pyvenv/bin/sphinx-build -q -j auto -Dversion=10.0.3 -Drelease= -Ddepfile=docs/docs.d -Ddepfile_sta mp=docs/docs.stamp -b html -d /scratch/emulators/qemu/work/qemu-10.0.3/build/docs/manual.p /scratch/emulators/qemu/work/qemu-10.0.3/docs /scratch/emulators/qemu/work/qemu-10.0.3/build/docs/manual Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:70: CRITICAL: Inconsistent title style: skip from level 1 to 3. Valid requests ^^^^^^^^^^^^^^ Established title styles: =/= - ^ [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:73: CRITICAL: Inconsistent title style: skip from level 1 to 4. 10:17:35 [41/1829] Clock management: """"""""""""""""" Established title styles: =/= - ^ " [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:107: CRITICAL: Inconsistent title style: skip from level 1 to 4. PIO and memory access: """""""""""""""""""""" Established title styles: =/= - ^ " [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:215: CRITICAL: Inconsistent title style: skip from level 1 to 4. IRQ management: """"""""""""""" Established title styles: =/= - ^ " [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:239: CRITICAL: Inconsistent title style: skip from level 1 to 4. Setting interrupt level: """""""""""""""""""""""" Established title styles: =/= - ^ " [docutils] Sphinx parallel build error! Versions ======== * Platform: netbsd11; (NetBSD-11.99.1-amd64-x86_64-64bit-ELF) * Python version: 3.13.5 (CPython) * Sphinx version: 8.2.3 * Docutils version: 0.22 * Jinja2 version: 3.1.6 * Pygments version: 2.19.2 Last Messages ============= reading sources... [ 91%] system/s390x/protvirt .. system/target-loongarch reading sources... [ 94%] system/target-m68k .. system/target-sparc64 reading sources... [ 97%] system/target-xtensa .. tools/qemu-nbd Loaded Extensions ================= * sphinx.ext.mathjax (8.2.3) * alabaster (1.0.0) * sphinxcontrib.applehelp (2.0.0) * sphinxcontrib.devhelp (2.0.0) * sphinxcontrib.htmlhelp (2.1.0) * sphinxcontrib.serializinghtml (2.0.0) * sphinxcontrib.qthelp (2.0.0) * depfile (1.0) * hxtool (1.0) * kerneldoc (1.0) * qapi_domain (1.0) * qapidoc (2.0) * qmp_lexer (unknown version) * dbusdoc (1.0) * sphinxcontrib.jquery (4.1) * sphinx_rtd_theme (unknown version) Traceback ========= File "/usr/pkg/lib/python3.13/site-packages/sphinx/util/parallel.py", line 137, in _join_one raise SphinxParallelError(*result) sphinx.errors.SphinxParallelError: TypeError: unsupported operand type(s) for +: 'NoneType' and 'list' The full traceback has been saved in: /tmp/sphinx-err-gj6pt4nj.log To report this error to the developers, please open an issue at <." rel="nofollow">https://github.com/sphinx-doc/sphinx/issues/>. Thanks! Please also report this if it was a user error, so that a better error message can be provided next time. ``` The full traceback from the log lists docutils code as the origin of the breakage: ``` Traceback ========= (Error in parallel process) Traceback (most recent call last): File "/usr/pkg/lib/python3.13/site-packages/sphinx/util/parallel.py", line 83, in _process ret = func(arg) # type: ignore[call-arg] File "/usr/pkg/lib/python3.13/site-packages/sphinx/builders/__init__.py", line 603, in read_process self.read_doc(docname, _cache=False) ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/builders/__init__.py", line 648, in read_doc publisher.publish() ~~~~~~~~~~~~~~~~~^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/core.py", line 269, in publish self.document = self.reader.read(self.source, self.parser, ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^ self.settings) ^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/io.py", line 103, in read self.parse() ~~~~~~~~~~^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/readers/__init__.py", line 101, in parse self.parser.parse(self.input, document) ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/parsers.py", line 86, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 165, in run results = StateMachineWS.run(self, input_lines, input_offset, input_source=document['source']) File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 235, in run context, next_state, result = self.check_line( ~~~~~~~~~~~~~~~^ context, state, transitions) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 447, in check_line return method(match, context, next_state) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2356, in explicit_markup self.explicit_list(blank_finish) ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2381, in explicit_list newline_offset, blank_finish = self.nested_list_parse( ~~~~~~~~~~~~~~~~~~~~~~^ self.state_machine.input_lines[offset:], ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...<2 lines>... blank_finish=blank_finish, ^^^^^^^^^^^^^^^^^^^^^^^^^^ match_titles=self.state_machine.match_titles) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 312, in nested_list_parse state_machine.run(block, input_offset, memo=self.memo, ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ node=node, match_titles=match_titles) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 191, in run results = StateMachineWS.run(self, input_lines, input_offset) File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 235, in run context, next_state, result = self.check_line( ~~~~~~~~~~~~~~~^ context, state, transitions) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 447, in check_line return method(match, context, next_state) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2659, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2366, in explicit_construct return method(self, expmatch) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2103, in directive return self.run_directive( ~~~~~~~~~~~~~~~~~~^ directive_class, match, type_name, option_presets) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2153, in run_directive result = directive_instance.run() File "/scratch/emulators/qemu/work/qemu-10.0.3/docs/sphinx/qapidoc.py", line 620, in run contentnode = self.transmogrify(schema) File "/scratch/emulators/qemu/work/qemu-10.0.3/docs/sphinx/qapidoc.py", line 549, in transmogrify nested_parse_with_titles(self.state, content, contentnode) ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/util/nodes.py", line 378, in nested_parse_with_titles ret = state.nested_parse(content, content_offset, node, match_titles=True) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 275, in nested_parse state_machine.run(block, input_offset, memo=self.memo, ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ node=node, match_titles=match_titles) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 191, in run results = StateMachineWS.run(self, input_lines, input_offset) File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 235, in run context, next_state, result = self.check_line( ~~~~~~~~~~~~~~~^ context, state, transitions) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 447, in check_line return method(match, context, next_state) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 3024, in text self.section(title.lstrip(), source, style, lineno + 1, messages) ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 321, in section self.new_subsection(title, lineno, messages) ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 370, in new_subsection self.parent += section_node File "/usr/pkg/lib/python3.13/site-packages/docutils/nodes.py", line 736, in __radd__ return other + self.children ~~~~~~^~~~~~~~~~~~~~~ TypeError: unsupported operand type(s) for +: 'NoneType' and 'list' ``` Even with the "CRITICAL: Inconsistent title style" problems fixed, the build stops. Any ideas what the problem is or how to fix it? Thanks. --- Sent from sourceforge.net because doc...@li... is subscribed to https://sourceforge.net/p/docutils/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/docutils/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Günter M. <mi...@us...> - 2025-08-11 13:10:55
|
Yes, Docutils now checks, whether the new "self.parent" after switching the section level is valid and reports these CRITICAL system messages (downgraded to ERROR in [r10198].
However, there is still a serious problem: an incompatibility with "qapidoc" rsp `sphinx.util.nodes.nested_parse_with_titles()`.
This should be fixed in [r10200].
Can you re-try?
For added robustness, I recommend that "qapidoc" switches from using `sphinx.util.nodes.nested_parse_with_titles()` to `sphinx.util.parsing.nested_parse_to_nodes()` as recommended in the docstring
of nested_parse_with_titles();
> This function is retained for compatibility and will be deprecated in
Sphinx 8. Prefer ``nested_parse_to_nodes()``.
Then, "qapidoc" should also work with Docutils 0.22.
---
**[bugs:#508] qemu build problem after docutils update to 0.22**
**Status:** open
**Created:** Mon Aug 04, 2025 08:23 AM UTC by Thomas Klausner
**Last Updated:** Fri Aug 08, 2025 08:56 PM UTC
**Owner:** nobody
After updating docutils in pkgsrc to 0.22 (with sphinx 8.2.3), qemu 10.0.3 (https://gitlab.com/qemu-project/qemu) stopped building. The output is not very clear:
```
[5596/6204] Generating docs/QEMU manual with a custom command
FAILED: [code=2] docs/docs.stamp
/scratch/emulators/qemu/work/.tools/bin/env CONFDIR=/usr/pkg/etc/qemu/qemu /scratch/emulators/qemu/work/qemu-10.0.3/build/pyvenv/bin/sphinx-build -q -j auto -Dversion=10.0.3 -Drelease= -Ddepfile=docs/docs.d -Ddepfile_sta
mp=docs/docs.stamp -b html -d /scratch/emulators/qemu/work/qemu-10.0.3/build/docs/manual.p /scratch/emulators/qemu/work/qemu-10.0.3/docs /scratch/emulators/qemu/work/qemu-10.0.3/build/docs/manual
Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597.
Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597.
Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597.
Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597.
Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597.
Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597.
Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597.
Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597.
Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597.
Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597.
Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597.
Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597.
/scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:70: CRITICAL: Inconsistent title style: skip from level 1 to 3.
Valid requests
^^^^^^^^^^^^^^
Established title styles: =/= - ^ [docutils]
/scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:73: CRITICAL: Inconsistent title style: skip from level 1 to 4.
10:17:35 [41/1829]
Clock management:
"""""""""""""""""
Established title styles: =/= - ^ " [docutils]
/scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:107: CRITICAL: Inconsistent title style: skip from level 1 to 4.
PIO and memory access:
""""""""""""""""""""""
Established title styles: =/= - ^ " [docutils]
/scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:215: CRITICAL: Inconsistent title style: skip from level 1 to 4.
IRQ management:
"""""""""""""""
Established title styles: =/= - ^ " [docutils]
/scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:239: CRITICAL: Inconsistent title style: skip from level 1 to 4.
Setting interrupt level:
""""""""""""""""""""""""
Established title styles: =/= - ^ " [docutils]
Sphinx parallel build error!
Versions
========
* Platform: netbsd11; (NetBSD-11.99.1-amd64-x86_64-64bit-ELF)
* Python version: 3.13.5 (CPython)
* Sphinx version: 8.2.3
* Docutils version: 0.22
* Jinja2 version: 3.1.6
* Pygments version: 2.19.2
Last Messages
=============
reading sources... [ 91%]
system/s390x/protvirt .. system/target-loongarch
reading sources... [ 94%]
system/target-m68k .. system/target-sparc64
reading sources... [ 97%]
system/target-xtensa .. tools/qemu-nbd
Loaded Extensions
=================
* sphinx.ext.mathjax (8.2.3)
* alabaster (1.0.0)
* sphinxcontrib.applehelp (2.0.0)
* sphinxcontrib.devhelp (2.0.0)
* sphinxcontrib.htmlhelp (2.1.0)
* sphinxcontrib.serializinghtml (2.0.0)
* sphinxcontrib.qthelp (2.0.0)
* depfile (1.0)
* hxtool (1.0)
* kerneldoc (1.0)
* qapi_domain (1.0)
* qapidoc (2.0)
* qmp_lexer (unknown version)
* dbusdoc (1.0)
* sphinxcontrib.jquery (4.1)
* sphinx_rtd_theme (unknown version)
Traceback
=========
File "/usr/pkg/lib/python3.13/site-packages/sphinx/util/parallel.py", line 137, in _join_one
raise SphinxParallelError(*result)
sphinx.errors.SphinxParallelError: TypeError: unsupported operand type(s) for +: 'NoneType' and 'list'
The full traceback has been saved in:
/tmp/sphinx-err-gj6pt4nj.log
To report this error to the developers, please open an issue at <." rel="nofollow">https://github.com/sphinx-doc/sphinx/issues/>. Thanks!
Please also report this if it was a user error, so that a better error message can be provided next time.
```
The full traceback from the log lists docutils code as the origin of the breakage:
```
Traceback
=========
(Error in parallel process)
Traceback (most recent call last):
File "/usr/pkg/lib/python3.13/site-packages/sphinx/util/parallel.py", line 83, in _process
ret = func(arg) # type: ignore[call-arg]
File "/usr/pkg/lib/python3.13/site-packages/sphinx/builders/__init__.py", line 603, in read_process
self.read_doc(docname, _cache=False)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/pkg/lib/python3.13/site-packages/sphinx/builders/__init__.py", line 648, in read_doc
publisher.publish()
~~~~~~~~~~~~~~~~~^^
File "/usr/pkg/lib/python3.13/site-packages/docutils/core.py", line 269, in publish
self.document = self.reader.read(self.source, self.parser,
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
self.settings)
^^^^^^^^^^^^^^
File "/usr/pkg/lib/python3.13/site-packages/sphinx/io.py", line 103, in read
self.parse()
~~~~~~~~~~^^
File "/usr/pkg/lib/python3.13/site-packages/docutils/readers/__init__.py", line 101, in parse
self.parser.parse(self.input, document)
~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
File "/usr/pkg/lib/python3.13/site-packages/sphinx/parsers.py", line 86, in parse
self.statemachine.run(inputlines, document, inliner=self.inliner)
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 165, in run
results = StateMachineWS.run(self, input_lines, input_offset,
input_source=document['source'])
File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 235, in run
context, next_state, result = self.check_line(
~~~~~~~~~~~~~~~^
context, state, transitions)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 447, in check_line
return method(match, context, next_state)
File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2356, in explicit_markup
self.explicit_list(blank_finish)
~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2381, in explicit_list
newline_offset, blank_finish = self.nested_list_parse(
~~~~~~~~~~~~~~~~~~~~~~^
self.state_machine.input_lines[offset:],
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<2 lines>...
blank_finish=blank_finish,
^^^^^^^^^^^^^^^^^^^^^^^^^^
match_titles=self.state_machine.match_titles)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 312, in nested_list_parse
state_machine.run(block, input_offset, memo=self.memo,
~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
node=node, match_titles=match_titles)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 191, in run
results = StateMachineWS.run(self, input_lines, input_offset)
File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 235, in run
context, next_state, result = self.check_line(
~~~~~~~~~~~~~~~^
context, state, transitions)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 447, in check_line
return method(match, context, next_state)
File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2659, in explicit_markup
nodelist, blank_finish = self.explicit_construct(match)
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2366, in explicit_construct
return method(self, expmatch)
File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2103, in directive
return self.run_directive(
~~~~~~~~~~~~~~~~~~^
directive_class, match, type_name, option_presets)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2153, in run_directive
result = directive_instance.run()
File "/scratch/emulators/qemu/work/qemu-10.0.3/docs/sphinx/qapidoc.py", line 620, in run
contentnode = self.transmogrify(schema)
File "/scratch/emulators/qemu/work/qemu-10.0.3/docs/sphinx/qapidoc.py", line 549, in transmogrify
nested_parse_with_titles(self.state, content, contentnode)
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/pkg/lib/python3.13/site-packages/sphinx/util/nodes.py", line 378, in nested_parse_with_titles
ret = state.nested_parse(content, content_offset, node, match_titles=True)
File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 275, in nested_parse
state_machine.run(block, input_offset, memo=self.memo,
~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
node=node, match_titles=match_titles)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 191, in run
results = StateMachineWS.run(self, input_lines, input_offset)
File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 235, in run
context, next_state, result = self.check_line(
~~~~~~~~~~~~~~~^
context, state, transitions)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 447, in check_line
return method(match, context, next_state)
File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 3024, in text
self.section(title.lstrip(), source, style, lineno + 1, messages)
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 321, in section
self.new_subsection(title, lineno, messages)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 370, in new_subsection
self.parent += section_node
File "/usr/pkg/lib/python3.13/site-packages/docutils/nodes.py", line 736, in __radd__
return other + self.children
~~~~~~^~~~~~~~~~~~~~~
TypeError: unsupported operand type(s) for +: 'NoneType' and 'list'
```
Even with the "CRITICAL: Inconsistent title style" problems fixed, the build stops.
Any ideas what the problem is or how to fix it?
Thanks.
---
Sent from sourceforge.net because doc...@li... is subscribed to https://sourceforge.net/p/docutils/bugs/
To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/docutils/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Günter M. <mi...@us...> - 2025-08-11 12:44:27
|
In this case, the problem seems to be an incompatibility with Sphinx's "autoprogram".
Can you please try with an updated repository version of Docutils?
Commit [r10200] should fix it.
---
**[bugs:#509] regression with docutils 0.22: unsupported operand type(s) for +: 'NoneType' and 'list'**
**Status:** open
**Created:** Wed Aug 06, 2025 06:13 PM UTC by Oliver Smith
**Last Updated:** Thu Aug 07, 2025 07:18 PM UTC
**Owner:** nobody
Hello,
after upgrading to docutils 0.22, building documentation for the pmbootstrap project fails:
~~~
Traceback (most recent call last):
File "/usr/lib/python3.12/site-packages/sphinx/cmd/build.py", line 432, in build_main
app.build(args.force_all, args.filenames)
File "/usr/lib/python3.12/site-packages/sphinx/application.py", line 426, in build
self.builder.build_update()
File "/usr/lib/python3.12/site-packages/sphinx/builders/__init__.py", line 375, in build_update
self.build(
File "/usr/lib/python3.12/site-packages/sphinx/builders/__init__.py", line 403, in build
updated_docnames = set(self.read())
^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/sphinx/builders/__init__.py", line 519, in read
self._read_serial(docnames)
File "/usr/lib/python3.12/site-packages/sphinx/builders/__init__.py", line 584, in _read_serial
self.read_doc(docname)
File "/usr/lib/python3.12/site-packages/sphinx/builders/__init__.py", line 648, in read_doc
publisher.publish()
File "/usr/lib/python3.12/site-packages/docutils/core.py", line 269, in publish
self.document = self.reader.read(self.source, self.parser,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/sphinx/io.py", line 103, in read
self.parse()
File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 101, in parse
self.parser.parse(self.input, document)
File "/usr/lib/python3.12/site-packages/sphinx/parsers.py", line 86, in parse
self.statemachine.run(inputlines, document, inliner=self.inliner)
File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 165, in run
results = StateMachineWS.run(self, input_lines, input_offset,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 235, in run
context, next_state, result = self.check_line(
^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 447, in check_line
return method(match, context, next_state)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2354, in explicit_markup
nodelist, blank_finish = self.explicit_construct(match)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2366, in explicit_construct
return method(self, expmatch)
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2103, in directive
return self.run_directive(
^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2153, in run_directive
result = directive_instance.run()
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/sphinxcontrib/autoprogram.py", line 262, in run
nested_parse_with_titles(self.state, result, node)
File "/usr/lib/python3.12/site-packages/sphinx/util/nodes.py", line 378, in nested_parse_with_titles
ret = state.nested_parse(content, content_offset, node, match_titles=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 275, in nested_parse
state_machine.run(block, input_offset, memo=self.memo,
File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 191, in run
results = StateMachineWS.run(self, input_lines, input_offset)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 235, in run
context, next_state, result = self.check_line(
^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 447, in check_line
return method(match, context, next_state)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2787, in underline
self.section(title, source, style, lineno - 1, messages)
File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 321, in section
self.new_subsection(title, lineno, messages)
File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 370, in new_subsection
self.parent += section_node
File "/usr/lib/python3.12/site-packages/docutils/nodes.py", line 736, in __radd__
return other + self.children
~~~~~~^~~~~~~~~~~~~~~
TypeError: unsupported operand type(s) for +: 'NoneType' and 'list'
~~~
Source code:
https://gitlab.postmarketos.org/postmarketOS/pmbootstrap/
Tested with commit:
5927ff70b8d2468d5d0e2c978bc1fe30d036fd7f
Distribution:
Alpine Linux Edge
---
Sent from sourceforge.net because doc...@li... is subscribed to https://sourceforge.net/p/docutils/bugs/
To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/docutils/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Günter M. <mi...@us...> - 2025-08-10 11:02:44
|
- **status**: open --> pending-remind - **Comment**: Thank you for the contribution. Unfortunately, we cannot include the patch without a change in the Docutils specification, https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html#standalone-hyperlinks, which limits the supported URI schemes to the ones listed in the Official IANA Registry of URI Schemes and the W3C's Retired Index of WWW Addressing Schemes. While I don't see a "gemini" URI scheme as a particular problematic case, adding non-registered schemes should be done with special care and consideration. Up to now, we (as Docutils developers) did not start to take this task onto ourselfs but relied on the abovementined sources. Mind, that the mapping in `doctuils.utils.urischemes` only considers the recognition of [standalone hyperlinks](https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html#standalone-hyperlinks). At places where an URI is expected (the link block of external hyperlink targets or the argument of an "image" or "figure" directive) any scheme is recognised, so the creation of valid "gemini" links is possible as, e.g., ~~~ A link_, `anonymous link`__, `indirect link with embedded target <link_>`__, `link with embedded URI <gemini://" rel="nofollow">example.org/gemtext3>`__. The reference text of links with embedded target may also be omitted, in which case the URI will be duplicated for use as the reference text: so `<gemini://" rel="nofollow">example.org/gemtext3>`__ gives the same result as a standalone hyperlink. gemini://example.org/other-gemtext .. _link: gemini://example.org/my-gemtext __ gemini://example.org/other-gemtext ~~~ --- **[patches:#200] Add the gemini:// URI scheme** **Status:** pending-remind **Group:** None **Created:** Tue Dec 20, 2022 04:40 PM UTC by Fabien LOISON **Last Updated:** Tue Dec 20, 2022 04:40 PM UTC **Owner:** nobody **Attachments:** - [gemini.patch](https://sourceforge.net/p/docutils/patches/200/attachment/gemini.patch) (529 Bytes; text/x-patch) Hello, I am currently working on a tool to convert reStructuredText files to Gemtext and I noticed the `gemini://...` URIs (used by the [Gemini Protocol](https://en.wikipedia.org/wiki/Gemini_(protocol))) were not automatically converted into links. I attached a small patch that adds the `gemini` scheme to the `docutils.utils.urischemes.schemes` dictionary. --- Sent from sourceforge.net because doc...@li... is subscribed to https://sourceforge.net/p/docutils/patches/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/docutils/admin/patches/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Günter M. <mi...@us...> - 2025-08-08 18:26:23
|
Could you re-try with [r10197] or the attached patch if this gets a more telling log or and maybe some output? Attachments: - [0001-Catch-invalid-node.parent-when-switching-section-lev.patch](https://sourceforge.net/p/docutils/bugs/_discuss/thread/e488751d7e/e5ae/attachment/0001-Catch-invalid-node.parent-when-switching-section-lev.patch) (3.4 kB; text/x-patch) --- **[bugs:#508] qemu build problem after docutils update to 0.22** **Status:** open **Created:** Mon Aug 04, 2025 08:23 AM UTC by Thomas Klausner **Last Updated:** Fri Aug 08, 2025 05:12 PM UTC **Owner:** nobody After updating docutils in pkgsrc to 0.22 (with sphinx 8.2.3), qemu 10.0.3 (https://gitlab.com/qemu-project/qemu) stopped building. The output is not very clear: ``` [5596/6204] Generating docs/QEMU manual with a custom command FAILED: [code=2] docs/docs.stamp /scratch/emulators/qemu/work/.tools/bin/env CONFDIR=/usr/pkg/etc/qemu/qemu /scratch/emulators/qemu/work/qemu-10.0.3/build/pyvenv/bin/sphinx-build -q -j auto -Dversion=10.0.3 -Drelease= -Ddepfile=docs/docs.d -Ddepfile_sta mp=docs/docs.stamp -b html -d /scratch/emulators/qemu/work/qemu-10.0.3/build/docs/manual.p /scratch/emulators/qemu/work/qemu-10.0.3/docs /scratch/emulators/qemu/work/qemu-10.0.3/build/docs/manual Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:70: CRITICAL: Inconsistent title style: skip from level 1 to 3. Valid requests ^^^^^^^^^^^^^^ Established title styles: =/= - ^ [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:73: CRITICAL: Inconsistent title style: skip from level 1 to 4. 10:17:35 [41/1829] Clock management: """"""""""""""""" Established title styles: =/= - ^ " [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:107: CRITICAL: Inconsistent title style: skip from level 1 to 4. PIO and memory access: """""""""""""""""""""" Established title styles: =/= - ^ " [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:215: CRITICAL: Inconsistent title style: skip from level 1 to 4. IRQ management: """"""""""""""" Established title styles: =/= - ^ " [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:239: CRITICAL: Inconsistent title style: skip from level 1 to 4. Setting interrupt level: """""""""""""""""""""""" Established title styles: =/= - ^ " [docutils] Sphinx parallel build error! Versions ======== * Platform: netbsd11; (NetBSD-11.99.1-amd64-x86_64-64bit-ELF) * Python version: 3.13.5 (CPython) * Sphinx version: 8.2.3 * Docutils version: 0.22 * Jinja2 version: 3.1.6 * Pygments version: 2.19.2 Last Messages ============= reading sources... [ 91%] system/s390x/protvirt .. system/target-loongarch reading sources... [ 94%] system/target-m68k .. system/target-sparc64 reading sources... [ 97%] system/target-xtensa .. tools/qemu-nbd Loaded Extensions ================= * sphinx.ext.mathjax (8.2.3) * alabaster (1.0.0) * sphinxcontrib.applehelp (2.0.0) * sphinxcontrib.devhelp (2.0.0) * sphinxcontrib.htmlhelp (2.1.0) * sphinxcontrib.serializinghtml (2.0.0) * sphinxcontrib.qthelp (2.0.0) * depfile (1.0) * hxtool (1.0) * kerneldoc (1.0) * qapi_domain (1.0) * qapidoc (2.0) * qmp_lexer (unknown version) * dbusdoc (1.0) * sphinxcontrib.jquery (4.1) * sphinx_rtd_theme (unknown version) Traceback ========= File "/usr/pkg/lib/python3.13/site-packages/sphinx/util/parallel.py", line 137, in _join_one raise SphinxParallelError(*result) sphinx.errors.SphinxParallelError: TypeError: unsupported operand type(s) for +: 'NoneType' and 'list' The full traceback has been saved in: /tmp/sphinx-err-gj6pt4nj.log To report this error to the developers, please open an issue at <." rel="nofollow">https://github.com/sphinx-doc/sphinx/issues/>. Thanks! Please also report this if it was a user error, so that a better error message can be provided next time. ``` The full traceback from the log lists docutils code as the origin of the breakage: ``` Traceback ========= (Error in parallel process) Traceback (most recent call last): File "/usr/pkg/lib/python3.13/site-packages/sphinx/util/parallel.py", line 83, in _process ret = func(arg) # type: ignore[call-arg] File "/usr/pkg/lib/python3.13/site-packages/sphinx/builders/__init__.py", line 603, in read_process self.read_doc(docname, _cache=False) ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/builders/__init__.py", line 648, in read_doc publisher.publish() ~~~~~~~~~~~~~~~~~^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/core.py", line 269, in publish self.document = self.reader.read(self.source, self.parser, ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^ self.settings) ^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/io.py", line 103, in read self.parse() ~~~~~~~~~~^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/readers/__init__.py", line 101, in parse self.parser.parse(self.input, document) ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/parsers.py", line 86, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 165, in run results = StateMachineWS.run(self, input_lines, input_offset, input_source=document['source']) File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 235, in run context, next_state, result = self.check_line( ~~~~~~~~~~~~~~~^ context, state, transitions) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 447, in check_line return method(match, context, next_state) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2356, in explicit_markup self.explicit_list(blank_finish) ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2381, in explicit_list newline_offset, blank_finish = self.nested_list_parse( ~~~~~~~~~~~~~~~~~~~~~~^ self.state_machine.input_lines[offset:], ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...<2 lines>... blank_finish=blank_finish, ^^^^^^^^^^^^^^^^^^^^^^^^^^ match_titles=self.state_machine.match_titles) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 312, in nested_list_parse state_machine.run(block, input_offset, memo=self.memo, ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ node=node, match_titles=match_titles) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 191, in run results = StateMachineWS.run(self, input_lines, input_offset) File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 235, in run context, next_state, result = self.check_line( ~~~~~~~~~~~~~~~^ context, state, transitions) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 447, in check_line return method(match, context, next_state) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2659, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2366, in explicit_construct return method(self, expmatch) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2103, in directive return self.run_directive( ~~~~~~~~~~~~~~~~~~^ directive_class, match, type_name, option_presets) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2153, in run_directive result = directive_instance.run() File "/scratch/emulators/qemu/work/qemu-10.0.3/docs/sphinx/qapidoc.py", line 620, in run contentnode = self.transmogrify(schema) File "/scratch/emulators/qemu/work/qemu-10.0.3/docs/sphinx/qapidoc.py", line 549, in transmogrify nested_parse_with_titles(self.state, content, contentnode) ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/util/nodes.py", line 378, in nested_parse_with_titles ret = state.nested_parse(content, content_offset, node, match_titles=True) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 275, in nested_parse state_machine.run(block, input_offset, memo=self.memo, ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ node=node, match_titles=match_titles) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 191, in run results = StateMachineWS.run(self, input_lines, input_offset) File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 235, in run context, next_state, result = self.check_line( ~~~~~~~~~~~~~~~^ context, state, transitions) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 447, in check_line return method(match, context, next_state) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 3024, in text self.section(title.lstrip(), source, style, lineno + 1, messages) ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 321, in section self.new_subsection(title, lineno, messages) ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 370, in new_subsection self.parent += section_node File "/usr/pkg/lib/python3.13/site-packages/docutils/nodes.py", line 736, in __radd__ return other + self.children ~~~~~~^~~~~~~~~~~~~~~ TypeError: unsupported operand type(s) for +: 'NoneType' and 'list' ``` Even with the "CRITICAL: Inconsistent title style" problems fixed, the build stops. Any ideas what the problem is or how to fix it? Thanks. --- Sent from sourceforge.net because doc...@li... is subscribed to https://sourceforge.net/p/docutils/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/docutils/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Günter M. <mi...@us...> - 2025-08-08 17:12:10
|
What is strange, though is that Sphinx' autodoc extension does not have a problem with the new section parsing algorithm. Which extension does the extraction of docstrings rsp. the combination of the docstrings into a document? --- **[bugs:#508] qemu build problem after docutils update to 0.22** **Status:** open **Created:** Mon Aug 04, 2025 08:23 AM UTC by Thomas Klausner **Last Updated:** Fri Aug 08, 2025 10:05 AM UTC **Owner:** nobody After updating docutils in pkgsrc to 0.22 (with sphinx 8.2.3), qemu 10.0.3 (https://gitlab.com/qemu-project/qemu) stopped building. The output is not very clear: ``` [5596/6204] Generating docs/QEMU manual with a custom command FAILED: [code=2] docs/docs.stamp /scratch/emulators/qemu/work/.tools/bin/env CONFDIR=/usr/pkg/etc/qemu/qemu /scratch/emulators/qemu/work/qemu-10.0.3/build/pyvenv/bin/sphinx-build -q -j auto -Dversion=10.0.3 -Drelease= -Ddepfile=docs/docs.d -Ddepfile_sta mp=docs/docs.stamp -b html -d /scratch/emulators/qemu/work/qemu-10.0.3/build/docs/manual.p /scratch/emulators/qemu/work/qemu-10.0.3/docs /scratch/emulators/qemu/work/qemu-10.0.3/build/docs/manual Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:70: CRITICAL: Inconsistent title style: skip from level 1 to 3. Valid requests ^^^^^^^^^^^^^^ Established title styles: =/= - ^ [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:73: CRITICAL: Inconsistent title style: skip from level 1 to 4. 10:17:35 [41/1829] Clock management: """"""""""""""""" Established title styles: =/= - ^ " [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:107: CRITICAL: Inconsistent title style: skip from level 1 to 4. PIO and memory access: """""""""""""""""""""" Established title styles: =/= - ^ " [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:215: CRITICAL: Inconsistent title style: skip from level 1 to 4. IRQ management: """"""""""""""" Established title styles: =/= - ^ " [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:239: CRITICAL: Inconsistent title style: skip from level 1 to 4. Setting interrupt level: """""""""""""""""""""""" Established title styles: =/= - ^ " [docutils] Sphinx parallel build error! Versions ======== * Platform: netbsd11; (NetBSD-11.99.1-amd64-x86_64-64bit-ELF) * Python version: 3.13.5 (CPython) * Sphinx version: 8.2.3 * Docutils version: 0.22 * Jinja2 version: 3.1.6 * Pygments version: 2.19.2 Last Messages ============= reading sources... [ 91%] system/s390x/protvirt .. system/target-loongarch reading sources... [ 94%] system/target-m68k .. system/target-sparc64 reading sources... [ 97%] system/target-xtensa .. tools/qemu-nbd Loaded Extensions ================= * sphinx.ext.mathjax (8.2.3) * alabaster (1.0.0) * sphinxcontrib.applehelp (2.0.0) * sphinxcontrib.devhelp (2.0.0) * sphinxcontrib.htmlhelp (2.1.0) * sphinxcontrib.serializinghtml (2.0.0) * sphinxcontrib.qthelp (2.0.0) * depfile (1.0) * hxtool (1.0) * kerneldoc (1.0) * qapi_domain (1.0) * qapidoc (2.0) * qmp_lexer (unknown version) * dbusdoc (1.0) * sphinxcontrib.jquery (4.1) * sphinx_rtd_theme (unknown version) Traceback ========= File "/usr/pkg/lib/python3.13/site-packages/sphinx/util/parallel.py", line 137, in _join_one raise SphinxParallelError(*result) sphinx.errors.SphinxParallelError: TypeError: unsupported operand type(s) for +: 'NoneType' and 'list' The full traceback has been saved in: /tmp/sphinx-err-gj6pt4nj.log To report this error to the developers, please open an issue at <." rel="nofollow">https://github.com/sphinx-doc/sphinx/issues/>. Thanks! Please also report this if it was a user error, so that a better error message can be provided next time. ``` The full traceback from the log lists docutils code as the origin of the breakage: ``` Traceback ========= (Error in parallel process) Traceback (most recent call last): File "/usr/pkg/lib/python3.13/site-packages/sphinx/util/parallel.py", line 83, in _process ret = func(arg) # type: ignore[call-arg] File "/usr/pkg/lib/python3.13/site-packages/sphinx/builders/__init__.py", line 603, in read_process self.read_doc(docname, _cache=False) ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/builders/__init__.py", line 648, in read_doc publisher.publish() ~~~~~~~~~~~~~~~~~^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/core.py", line 269, in publish self.document = self.reader.read(self.source, self.parser, ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^ self.settings) ^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/io.py", line 103, in read self.parse() ~~~~~~~~~~^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/readers/__init__.py", line 101, in parse self.parser.parse(self.input, document) ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/parsers.py", line 86, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 165, in run results = StateMachineWS.run(self, input_lines, input_offset, input_source=document['source']) File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 235, in run context, next_state, result = self.check_line( ~~~~~~~~~~~~~~~^ context, state, transitions) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 447, in check_line return method(match, context, next_state) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2356, in explicit_markup self.explicit_list(blank_finish) ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2381, in explicit_list newline_offset, blank_finish = self.nested_list_parse( ~~~~~~~~~~~~~~~~~~~~~~^ self.state_machine.input_lines[offset:], ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...<2 lines>... blank_finish=blank_finish, ^^^^^^^^^^^^^^^^^^^^^^^^^^ match_titles=self.state_machine.match_titles) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 312, in nested_list_parse state_machine.run(block, input_offset, memo=self.memo, ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ node=node, match_titles=match_titles) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 191, in run results = StateMachineWS.run(self, input_lines, input_offset) File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 235, in run context, next_state, result = self.check_line( ~~~~~~~~~~~~~~~^ context, state, transitions) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 447, in check_line return method(match, context, next_state) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2659, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2366, in explicit_construct return method(self, expmatch) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2103, in directive return self.run_directive( ~~~~~~~~~~~~~~~~~~^ directive_class, match, type_name, option_presets) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2153, in run_directive result = directive_instance.run() File "/scratch/emulators/qemu/work/qemu-10.0.3/docs/sphinx/qapidoc.py", line 620, in run contentnode = self.transmogrify(schema) File "/scratch/emulators/qemu/work/qemu-10.0.3/docs/sphinx/qapidoc.py", line 549, in transmogrify nested_parse_with_titles(self.state, content, contentnode) ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/util/nodes.py", line 378, in nested_parse_with_titles ret = state.nested_parse(content, content_offset, node, match_titles=True) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 275, in nested_parse state_machine.run(block, input_offset, memo=self.memo, ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ node=node, match_titles=match_titles) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 191, in run results = StateMachineWS.run(self, input_lines, input_offset) File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 235, in run context, next_state, result = self.check_line( ~~~~~~~~~~~~~~~^ context, state, transitions) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 447, in check_line return method(match, context, next_state) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 3024, in text self.section(title.lstrip(), source, style, lineno + 1, messages) ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 321, in section self.new_subsection(title, lineno, messages) ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 370, in new_subsection self.parent += section_node File "/usr/pkg/lib/python3.13/site-packages/docutils/nodes.py", line 736, in __radd__ return other + self.children ~~~~~~^~~~~~~~~~~~~~~ TypeError: unsupported operand type(s) for +: 'NoneType' and 'list' ``` Even with the "CRITICAL: Inconsistent title style" problems fixed, the build stops. Any ideas what the problem is or how to fix it? Thanks. --- Sent from sourceforge.net because doc...@li... is subscribed to https://sourceforge.net/p/docutils/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/docutils/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Günter M. <mi...@us...> - 2025-08-08 10:05:10
|
You are right. As also seen in [#509], the CRITICAL errors are just on top of the problem (and helped to find the reasong beeing some "docstring reading" extension (plus docstrings that include section headings) beeing incompatible with Docutils 0.22. (Unfortunately, the new section algorithm was only tested with Sphinx, not with Sphinx extensions and docstrings containing section headings.) --- **[bugs:#508] qemu build problem after docutils update to 0.22** **Status:** open **Created:** Mon Aug 04, 2025 08:23 AM UTC by Thomas Klausner **Last Updated:** Thu Aug 07, 2025 01:36 PM UTC **Owner:** nobody After updating docutils in pkgsrc to 0.22 (with sphinx 8.2.3), qemu 10.0.3 (https://gitlab.com/qemu-project/qemu) stopped building. The output is not very clear: ``` [5596/6204] Generating docs/QEMU manual with a custom command FAILED: [code=2] docs/docs.stamp /scratch/emulators/qemu/work/.tools/bin/env CONFDIR=/usr/pkg/etc/qemu/qemu /scratch/emulators/qemu/work/qemu-10.0.3/build/pyvenv/bin/sphinx-build -q -j auto -Dversion=10.0.3 -Drelease= -Ddepfile=docs/docs.d -Ddepfile_sta mp=docs/docs.stamp -b html -d /scratch/emulators/qemu/work/qemu-10.0.3/build/docs/manual.p /scratch/emulators/qemu/work/qemu-10.0.3/docs /scratch/emulators/qemu/work/qemu-10.0.3/build/docs/manual Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:70: CRITICAL: Inconsistent title style: skip from level 1 to 3. Valid requests ^^^^^^^^^^^^^^ Established title styles: =/= - ^ [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:73: CRITICAL: Inconsistent title style: skip from level 1 to 4. 10:17:35 [41/1829] Clock management: """"""""""""""""" Established title styles: =/= - ^ " [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:107: CRITICAL: Inconsistent title style: skip from level 1 to 4. PIO and memory access: """""""""""""""""""""" Established title styles: =/= - ^ " [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:215: CRITICAL: Inconsistent title style: skip from level 1 to 4. IRQ management: """"""""""""""" Established title styles: =/= - ^ " [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:239: CRITICAL: Inconsistent title style: skip from level 1 to 4. Setting interrupt level: """""""""""""""""""""""" Established title styles: =/= - ^ " [docutils] Sphinx parallel build error! Versions ======== * Platform: netbsd11; (NetBSD-11.99.1-amd64-x86_64-64bit-ELF) * Python version: 3.13.5 (CPython) * Sphinx version: 8.2.3 * Docutils version: 0.22 * Jinja2 version: 3.1.6 * Pygments version: 2.19.2 Last Messages ============= reading sources... [ 91%] system/s390x/protvirt .. system/target-loongarch reading sources... [ 94%] system/target-m68k .. system/target-sparc64 reading sources... [ 97%] system/target-xtensa .. tools/qemu-nbd Loaded Extensions ================= * sphinx.ext.mathjax (8.2.3) * alabaster (1.0.0) * sphinxcontrib.applehelp (2.0.0) * sphinxcontrib.devhelp (2.0.0) * sphinxcontrib.htmlhelp (2.1.0) * sphinxcontrib.serializinghtml (2.0.0) * sphinxcontrib.qthelp (2.0.0) * depfile (1.0) * hxtool (1.0) * kerneldoc (1.0) * qapi_domain (1.0) * qapidoc (2.0) * qmp_lexer (unknown version) * dbusdoc (1.0) * sphinxcontrib.jquery (4.1) * sphinx_rtd_theme (unknown version) Traceback ========= File "/usr/pkg/lib/python3.13/site-packages/sphinx/util/parallel.py", line 137, in _join_one raise SphinxParallelError(*result) sphinx.errors.SphinxParallelError: TypeError: unsupported operand type(s) for +: 'NoneType' and 'list' The full traceback has been saved in: /tmp/sphinx-err-gj6pt4nj.log To report this error to the developers, please open an issue at <." rel="nofollow">https://github.com/sphinx-doc/sphinx/issues/>. Thanks! Please also report this if it was a user error, so that a better error message can be provided next time. ``` The full traceback from the log lists docutils code as the origin of the breakage: ``` Traceback ========= (Error in parallel process) Traceback (most recent call last): File "/usr/pkg/lib/python3.13/site-packages/sphinx/util/parallel.py", line 83, in _process ret = func(arg) # type: ignore[call-arg] File "/usr/pkg/lib/python3.13/site-packages/sphinx/builders/__init__.py", line 603, in read_process self.read_doc(docname, _cache=False) ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/builders/__init__.py", line 648, in read_doc publisher.publish() ~~~~~~~~~~~~~~~~~^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/core.py", line 269, in publish self.document = self.reader.read(self.source, self.parser, ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^ self.settings) ^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/io.py", line 103, in read self.parse() ~~~~~~~~~~^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/readers/__init__.py", line 101, in parse self.parser.parse(self.input, document) ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/parsers.py", line 86, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 165, in run results = StateMachineWS.run(self, input_lines, input_offset, input_source=document['source']) File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 235, in run context, next_state, result = self.check_line( ~~~~~~~~~~~~~~~^ context, state, transitions) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 447, in check_line return method(match, context, next_state) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2356, in explicit_markup self.explicit_list(blank_finish) ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2381, in explicit_list newline_offset, blank_finish = self.nested_list_parse( ~~~~~~~~~~~~~~~~~~~~~~^ self.state_machine.input_lines[offset:], ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...<2 lines>... blank_finish=blank_finish, ^^^^^^^^^^^^^^^^^^^^^^^^^^ match_titles=self.state_machine.match_titles) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 312, in nested_list_parse state_machine.run(block, input_offset, memo=self.memo, ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ node=node, match_titles=match_titles) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 191, in run results = StateMachineWS.run(self, input_lines, input_offset) File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 235, in run context, next_state, result = self.check_line( ~~~~~~~~~~~~~~~^ context, state, transitions) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 447, in check_line return method(match, context, next_state) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2659, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2366, in explicit_construct return method(self, expmatch) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2103, in directive return self.run_directive( ~~~~~~~~~~~~~~~~~~^ directive_class, match, type_name, option_presets) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2153, in run_directive result = directive_instance.run() File "/scratch/emulators/qemu/work/qemu-10.0.3/docs/sphinx/qapidoc.py", line 620, in run contentnode = self.transmogrify(schema) File "/scratch/emulators/qemu/work/qemu-10.0.3/docs/sphinx/qapidoc.py", line 549, in transmogrify nested_parse_with_titles(self.state, content, contentnode) ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/util/nodes.py", line 378, in nested_parse_with_titles ret = state.nested_parse(content, content_offset, node, match_titles=True) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 275, in nested_parse state_machine.run(block, input_offset, memo=self.memo, ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ node=node, match_titles=match_titles) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 191, in run results = StateMachineWS.run(self, input_lines, input_offset) File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 235, in run context, next_state, result = self.check_line( ~~~~~~~~~~~~~~~^ context, state, transitions) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 447, in check_line return method(match, context, next_state) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 3024, in text self.section(title.lstrip(), source, style, lineno + 1, messages) ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 321, in section self.new_subsection(title, lineno, messages) ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 370, in new_subsection self.parent += section_node File "/usr/pkg/lib/python3.13/site-packages/docutils/nodes.py", line 736, in __radd__ return other + self.children ~~~~~~^~~~~~~~~~~~~~~ TypeError: unsupported operand type(s) for +: 'NoneType' and 'list' ``` Even with the "CRITICAL: Inconsistent title style" problems fixed, the build stops. Any ideas what the problem is or how to fix it? Thanks. --- Sent from sourceforge.net because doc...@li... is subscribed to https://sourceforge.net/p/docutils/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/docutils/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Günter M. <mi...@us...> - 2025-08-07 13:11:22
|
This looks like the problem reported in [bugs:508].
Could you check the Sphinx log?
Do you use "autodoc" or similar extensions to extract docstrings?
---
**[bugs:#509] regression with docutils 0.22: unsupported operand type(s) for +: 'NoneType' and 'list'**
**Status:** open
**Created:** Wed Aug 06, 2025 06:13 PM UTC by Oliver Smith
**Last Updated:** Wed Aug 06, 2025 06:13 PM UTC
**Owner:** nobody
Hello,
after upgrading to docutils 0.22, building documentation for the pmbootstrap project fails:
~~~
Traceback (most recent call last):
File "/usr/lib/python3.12/site-packages/sphinx/cmd/build.py", line 432, in build_main
app.build(args.force_all, args.filenames)
File "/usr/lib/python3.12/site-packages/sphinx/application.py", line 426, in build
self.builder.build_update()
File "/usr/lib/python3.12/site-packages/sphinx/builders/__init__.py", line 375, in build_update
self.build(
File "/usr/lib/python3.12/site-packages/sphinx/builders/__init__.py", line 403, in build
updated_docnames = set(self.read())
^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/sphinx/builders/__init__.py", line 519, in read
self._read_serial(docnames)
File "/usr/lib/python3.12/site-packages/sphinx/builders/__init__.py", line 584, in _read_serial
self.read_doc(docname)
File "/usr/lib/python3.12/site-packages/sphinx/builders/__init__.py", line 648, in read_doc
publisher.publish()
File "/usr/lib/python3.12/site-packages/docutils/core.py", line 269, in publish
self.document = self.reader.read(self.source, self.parser,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/sphinx/io.py", line 103, in read
self.parse()
File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 101, in parse
self.parser.parse(self.input, document)
File "/usr/lib/python3.12/site-packages/sphinx/parsers.py", line 86, in parse
self.statemachine.run(inputlines, document, inliner=self.inliner)
File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 165, in run
results = StateMachineWS.run(self, input_lines, input_offset,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 235, in run
context, next_state, result = self.check_line(
^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 447, in check_line
return method(match, context, next_state)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2354, in explicit_markup
nodelist, blank_finish = self.explicit_construct(match)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2366, in explicit_construct
return method(self, expmatch)
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2103, in directive
return self.run_directive(
^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2153, in run_directive
result = directive_instance.run()
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/sphinxcontrib/autoprogram.py", line 262, in run
nested_parse_with_titles(self.state, result, node)
File "/usr/lib/python3.12/site-packages/sphinx/util/nodes.py", line 378, in nested_parse_with_titles
ret = state.nested_parse(content, content_offset, node, match_titles=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 275, in nested_parse
state_machine.run(block, input_offset, memo=self.memo,
File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 191, in run
results = StateMachineWS.run(self, input_lines, input_offset)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 235, in run
context, next_state, result = self.check_line(
^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 447, in check_line
return method(match, context, next_state)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2787, in underline
self.section(title, source, style, lineno - 1, messages)
File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 321, in section
self.new_subsection(title, lineno, messages)
File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 370, in new_subsection
self.parent += section_node
File "/usr/lib/python3.12/site-packages/docutils/nodes.py", line 736, in __radd__
return other + self.children
~~~~~~^~~~~~~~~~~~~~~
TypeError: unsupported operand type(s) for +: 'NoneType' and 'list'
~~~
Source code:
https://gitlab.postmarketos.org/postmarketOS/pmbootstrap/
Tested with commit:
5927ff70b8d2468d5d0e2c978bc1fe30d036fd7f
Distribution:
Alpine Linux Edge
---
Sent from sourceforge.net because doc...@li... is subscribed to https://sourceforge.net/p/docutils/bugs/
To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/docutils/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Günter M. <mi...@us...> - 2025-08-07 13:07:13
|
The reason is an incompatibility of Sphinx or one of the Sphinx extensions with the new section parsing algorithm introduced in commit [r10093] with updates in [r10129], [r10131], [r10131]. The unhelpful "TypeError" is displayed because Sphinx carries on after a CRITICAL problem which leads to follow-up problems (here, `self.parent` beeing None instead of an Element instance). The error reported by Docutils gives some hints. Let's dissect the first message: ~~~ /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:70: CRITICAL: Inconsistent title style: skip from level 1 to 3. Valid requests ^^^^^^^^^^^^^^ Established title styles: =/= - ^ [docutils] ~~~ It provides the source file and line (system/qtest.c, line 70) and a reason (`Inconsistent title style: skip from level 1 to 3.`). How does it come to this conclusion: * The parser keeps a record of section adornment styles in the `memo` attribute of the `document` object. These are the "Established title styles" (under- and overline with `=` for level 1, underline with `-` for level 2, and underline with `^` for level 3. The new section header uses an underline with `^`. Hence, the new section should be at level 3. * The current section level is determined scanning the parent elements of the current element for `<section>` elements. Level 1 means that one parent section was found. A the level (depth) of a section element is determined from its physical nesting level, it is impossible to represent a level 3 section inside a level 1 section in the doctree. ### Why does the Docutils update trigger this problem? The source is a docstring in a C file. Some extension must have been used to extract it and include it (together with other docstrings) in a wrapper document. When including a source, there are two strategies to handle section adornment styles: 1. enforce a consistent style hierarchy across all included parts, 2. establish a new style hierarchy for the included parts. It seems as if with previous Docutisl versions there was strategy 2 and now its stratagy 1. This is most likely not intended but a side effect of the changes to the inner working of the parser. To fix it, we would need to know which extension is used to extract the docstrings and cooperate with its developers. --- **[bugs:#508] qemu build problem after docutils update to 0.22** **Status:** open **Created:** Mon Aug 04, 2025 08:23 AM UTC by Thomas Klausner **Last Updated:** Mon Aug 04, 2025 08:23 AM UTC **Owner:** nobody After updating docutils in pkgsrc to 0.22 (with sphinx 8.2.3), qemu 10.0.3 (https://gitlab.com/qemu-project/qemu) stopped building. The output is not very clear: ``` [5596/6204] Generating docs/QEMU manual with a custom command FAILED: [code=2] docs/docs.stamp /scratch/emulators/qemu/work/.tools/bin/env CONFDIR=/usr/pkg/etc/qemu/qemu /scratch/emulators/qemu/work/qemu-10.0.3/build/pyvenv/bin/sphinx-build -q -j auto -Dversion=10.0.3 -Drelease= -Ddepfile=docs/docs.d -Ddepfile_sta mp=docs/docs.stamp -b html -d /scratch/emulators/qemu/work/qemu-10.0.3/build/docs/manual.p /scratch/emulators/qemu/work/qemu-10.0.3/docs /scratch/emulators/qemu/work/qemu-10.0.3/build/docs/manual Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. Possible precedence problem between ! and pattern match (m//) at /scratch/emulators/qemu/work/qemu-10.0.3/docs/../scripts/kernel-doc line 1597. /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:70: CRITICAL: Inconsistent title style: skip from level 1 to 3. Valid requests ^^^^^^^^^^^^^^ Established title styles: =/= - ^ [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:73: CRITICAL: Inconsistent title style: skip from level 1 to 4. 10:17:35 [41/1829] Clock management: """"""""""""""""" Established title styles: =/= - ^ " [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:107: CRITICAL: Inconsistent title style: skip from level 1 to 4. PIO and memory access: """""""""""""""""""""" Established title styles: =/= - ^ " [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:215: CRITICAL: Inconsistent title style: skip from level 1 to 4. IRQ management: """"""""""""""" Established title styles: =/= - ^ " [docutils] /scratch/emulators/qemu/work/qemu-10.0.3/docs/../system/qtest.c:239: CRITICAL: Inconsistent title style: skip from level 1 to 4. Setting interrupt level: """""""""""""""""""""""" Established title styles: =/= - ^ " [docutils] Sphinx parallel build error! Versions ======== * Platform: netbsd11; (NetBSD-11.99.1-amd64-x86_64-64bit-ELF) * Python version: 3.13.5 (CPython) * Sphinx version: 8.2.3 * Docutils version: 0.22 * Jinja2 version: 3.1.6 * Pygments version: 2.19.2 Last Messages ============= reading sources... [ 91%] system/s390x/protvirt .. system/target-loongarch reading sources... [ 94%] system/target-m68k .. system/target-sparc64 reading sources... [ 97%] system/target-xtensa .. tools/qemu-nbd Loaded Extensions ================= * sphinx.ext.mathjax (8.2.3) * alabaster (1.0.0) * sphinxcontrib.applehelp (2.0.0) * sphinxcontrib.devhelp (2.0.0) * sphinxcontrib.htmlhelp (2.1.0) * sphinxcontrib.serializinghtml (2.0.0) * sphinxcontrib.qthelp (2.0.0) * depfile (1.0) * hxtool (1.0) * kerneldoc (1.0) * qapi_domain (1.0) * qapidoc (2.0) * qmp_lexer (unknown version) * dbusdoc (1.0) * sphinxcontrib.jquery (4.1) * sphinx_rtd_theme (unknown version) Traceback ========= File "/usr/pkg/lib/python3.13/site-packages/sphinx/util/parallel.py", line 137, in _join_one raise SphinxParallelError(*result) sphinx.errors.SphinxParallelError: TypeError: unsupported operand type(s) for +: 'NoneType' and 'list' The full traceback has been saved in: /tmp/sphinx-err-gj6pt4nj.log To report this error to the developers, please open an issue at <." rel="nofollow">https://github.com/sphinx-doc/sphinx/issues/>. Thanks! Please also report this if it was a user error, so that a better error message can be provided next time. ``` The full traceback from the log lists docutils code as the origin of the breakage: ``` Traceback ========= (Error in parallel process) Traceback (most recent call last): File "/usr/pkg/lib/python3.13/site-packages/sphinx/util/parallel.py", line 83, in _process ret = func(arg) # type: ignore[call-arg] File "/usr/pkg/lib/python3.13/site-packages/sphinx/builders/__init__.py", line 603, in read_process self.read_doc(docname, _cache=False) ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/builders/__init__.py", line 648, in read_doc publisher.publish() ~~~~~~~~~~~~~~~~~^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/core.py", line 269, in publish self.document = self.reader.read(self.source, self.parser, ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^ self.settings) ^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/io.py", line 103, in read self.parse() ~~~~~~~~~~^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/readers/__init__.py", line 101, in parse self.parser.parse(self.input, document) ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/parsers.py", line 86, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 165, in run results = StateMachineWS.run(self, input_lines, input_offset, input_source=document['source']) File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 235, in run context, next_state, result = self.check_line( ~~~~~~~~~~~~~~~^ context, state, transitions) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 447, in check_line return method(match, context, next_state) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2356, in explicit_markup self.explicit_list(blank_finish) ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2381, in explicit_list newline_offset, blank_finish = self.nested_list_parse( ~~~~~~~~~~~~~~~~~~~~~~^ self.state_machine.input_lines[offset:], ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...<2 lines>... blank_finish=blank_finish, ^^^^^^^^^^^^^^^^^^^^^^^^^^ match_titles=self.state_machine.match_titles) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 312, in nested_list_parse state_machine.run(block, input_offset, memo=self.memo, ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ node=node, match_titles=match_titles) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 191, in run results = StateMachineWS.run(self, input_lines, input_offset) File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 235, in run context, next_state, result = self.check_line( ~~~~~~~~~~~~~~~^ context, state, transitions) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 447, in check_line return method(match, context, next_state) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2659, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2366, in explicit_construct return method(self, expmatch) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2103, in directive return self.run_directive( ~~~~~~~~~~~~~~~~~~^ directive_class, match, type_name, option_presets) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 2153, in run_directive result = directive_instance.run() File "/scratch/emulators/qemu/work/qemu-10.0.3/docs/sphinx/qapidoc.py", line 620, in run contentnode = self.transmogrify(schema) File "/scratch/emulators/qemu/work/qemu-10.0.3/docs/sphinx/qapidoc.py", line 549, in transmogrify nested_parse_with_titles(self.state, content, contentnode) ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/sphinx/util/nodes.py", line 378, in nested_parse_with_titles ret = state.nested_parse(content, content_offset, node, match_titles=True) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 275, in nested_parse state_machine.run(block, input_offset, memo=self.memo, ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ node=node, match_titles=match_titles) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 191, in run results = StateMachineWS.run(self, input_lines, input_offset) File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 235, in run context, next_state, result = self.check_line( ~~~~~~~~~~~~~~~^ context, state, transitions) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/statemachine.py", line 447, in check_line return method(match, context, next_state) File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 3024, in text self.section(title.lstrip(), source, style, lineno + 1, messages) ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 321, in section self.new_subsection(title, lineno, messages) ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/pkg/lib/python3.13/site-packages/docutils/parsers/rst/states.py", line 370, in new_subsection self.parent += section_node File "/usr/pkg/lib/python3.13/site-packages/docutils/nodes.py", line 736, in __radd__ return other + self.children ~~~~~~^~~~~~~~~~~~~~~ TypeError: unsupported operand type(s) for +: 'NoneType' and 'list' ``` Even with the "CRITICAL: Inconsistent title style" problems fixed, the build stops. Any ideas what the problem is or how to fix it? Thanks. --- Sent from sourceforge.net because doc...@li... is subscribed to https://sourceforge.net/p/docutils/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/docutils/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Günter M. <mi...@us...> - 2025-08-03 20:41:13
|
See also the discussion in [Sphinx issue #8709](https://github.com/sphinx-doc/sphinx/issues/8709). --- **[feature-requests:#66] allow more characters when transforming "names" to "ids".** **Status:** pending **Group:** Default **Created:** Mon Sep 30, 2019 05:30 PM UTC by Roland Puntaier **Last Updated:** Tue Apr 29, 2025 07:07 PM UTC **Owner:** nobody `` encloses a role. There is a default role, else :<role>:`text` _ in front, is the special target role. For one word the backtick can be dropped. _`__init__` should produce a target named "__init__". But instead the produced target is "init". The backtick avoids ambiguity. There is no need for this behavior. --- Sent from sourceforge.net because doc...@li... is subscribed to https://sourceforge.net/p/docutils/feature-requests/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/docutils/admin/feature-requests/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Günter M. <mi...@us...> - 2025-07-31 13:20:43
|
- **status**: open-fixed --> closed-fixed - **Comment**: Fixed in Docutils 0.22. Commit [r10176] makes targets from hyperlink references with embedded URI or alias implicit. --- **[bugs:#502] Duplicate target not always recognized.** **Status:** closed-fixed **Created:** Tue Jun 03, 2025 09:33 AM UTC by Günter Milde **Last Updated:** Thu Jul 31, 2025 01:20 PM UTC **Owner:** nobody Hyperlinks with embedded alias generate both, a `<reference>` and a `<target>`. This allows simple references to the target: ~~~ See `here <example.html>`_. As we have shown here_, ... ~~~ However, it may lead to duplicates: ~~~ _`Here` is an explicit inline target. See `here <example.html>`_. As we have shown here_, ... ~~~ The second target gives a WARNING `Duplicate explicit target name: "here".` Using the reference name results in an ERROR `Duplicate target name, cannot be used as a unique reference: "here".` However (in versions up to 0.22.rc2), the duplicate target is ignored in case of **embedded internal** targets: ~~~ _`Here` is an explicit inline target. See `here <elsewhere_>`_. As we have shown here_, ... The target is _`elsewhere`. ~~~ There is no WARNING or ERROR and both references link to "elsewhere". This is fixed in [r10151]. --- Sent from sourceforge.net because doc...@li... is subscribed to https://sourceforge.net/p/docutils/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/docutils/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Günter M. <mi...@us...> - 2025-07-31 13:20:11
|
- **status**: open --> open-fixed - **Comment**: Fixed in Docutils 0.22. Commit [r10176] makes targets from hyperlink references with embedded URI or alias implicit. --- **[bugs:#502] Duplicate target not always recognized.** **Status:** open-fixed **Created:** Tue Jun 03, 2025 09:33 AM UTC by Günter Milde **Last Updated:** Mon Jun 16, 2025 01:02 PM UTC **Owner:** nobody Hyperlinks with embedded alias generate both, a `<reference>` and a `<target>`. This allows simple references to the target: ~~~ See `here <example.html>`_. As we have shown here_, ... ~~~ However, it may lead to duplicates: ~~~ _`Here` is an explicit inline target. See `here <example.html>`_. As we have shown here_, ... ~~~ The second target gives a WARNING `Duplicate explicit target name: "here".` Using the reference name results in an ERROR `Duplicate target name, cannot be used as a unique reference: "here".` However (in versions up to 0.22.rc2), the duplicate target is ignored in case of **embedded internal** targets: ~~~ _`Here` is an explicit inline target. See `here <elsewhere_>`_. As we have shown here_, ... The target is _`elsewhere`. ~~~ There is no WARNING or ERROR and both references link to "elsewhere". This is fixed in [r10151]. --- Sent from sourceforge.net because doc...@li... is subscribed to https://sourceforge.net/p/docutils/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/docutils/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Günter M. <mi...@us...> - 2025-07-31 13:06:28
|
I looked at the patch and found a number of issues:
* Message "details" misleading if the right border is not misaligned but missing.
* system exit with corrupt bottom border:
The compulsory "details" and "offset" arguments for `malformed_table()` lead to a system exit with traceback - for document authors this is worse than a generic error message. It is also an incompatible change in the Docutils library (some 3rd party extension may use the function...).
+-----------------------+
| A table with one cell |
| & corrupt bottom. |
+---------------------- +
* Indicated line for simple table with non-matching bottom border is wrong, if the table does not start on line 1 of the document!
* If there is no bottom border for a simple table, the complete remaining document may be scanned. Therefore it is both, simpler and more helpful to indicate the start line of a simple table with missing bottom border.
* The error "No bottom table border found or no blank line after table bottom." is raised because the markup is ambiguous:
============== ======
content or header
============== ======
this could be cell content
or text after the table
* According to the coding policy, lines should be < 80 characters.
The attached patch adresses these points and solves some more issues with the original code.
Attachments:
- [table-errors2.diff](https://sourceforge.net/p/docutils/patches/_discuss/thread/ecf1ca00d3/f025/attachment/table-errors2.diff) (7.6 kB; text/x-patch)
---
**[patches:#214] Give better messages on malformed tables**
**Status:** open
**Group:** None
**Created:** Sun Jun 08, 2025 05:58 PM UTC by Jynn Nelson
**Last Updated:** Sun Jul 20, 2025 09:57 PM UTC
**Owner:** nobody
**Attachments:**
- [tables.diff](https://sourceforge.net/p/docutils/patches/214/attachment/tables.diff) (5.2 kB; application/octet-stream)
This does several things:
- Specifies `Misaligned right border` for that error, instead of just "malformed table".
- Shows the line where each error happened, not the line where the table starts.
- This had a complication that line numbers appear to be wrong when `include` directives are present (they include the lines in the source document, instead of being relative to the included document). Just disabled the new smarter logic in that case.
- Changes `malformed_table` to require both detail and an offset, so poor errors like this can't happen in the future.
Fixes https://sourceforge.net/p/docutils/bugs/504/.
---
Sent from sourceforge.net because doc...@li... is subscribed to https://sourceforge.net/p/docutils/patches/
To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/docutils/admin/patches/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Günter M. <mi...@us...> - 2025-07-31 11:25:57
|
- **status**: open --> closed-fixed - **Comment**: Fixed. Thanks again. --- **[bugs:#507] renamed files** **Status:** closed-fixed **Labels:** docs **Created:** Mon Jul 28, 2025 04:13 AM UTC by Chris Crawford **Last Updated:** Tue Jul 29, 2025 07:43 AM UTC **Owner:** nobody some of the links are broken on https://docutils.sourceforge.io/rst.html because .txt files were renamed to .rst: https://docutils.sourceforge.io/docs/user/rst/quickstart.txt https://docutils.sourceforge.io/docs/user/rst/cheatsheet.txt there may be others --- Sent from sourceforge.net because doc...@li... is subscribed to https://sourceforge.net/p/docutils/bugs/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/docutils/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Guenter M. <mi...@us...> - 2025-07-30 10:44:10
|
On 2025-07-29, engelbert gruber wrote: > the final 0.22 is in the open Thanks for the release. Let's wait with new features and changes for some weeks, so we can easily put out a 0.22.1 if required. Backwards-compatible bugfixes are welcome. The first issue already came in: a release date typo reported in docutils-users and corrected in the repo. As this is non-critical, we can wait with a follow up release until there is more feedback. Günter |
|
From: Günter M. <mi...@us...> - 2025-07-30 09:30:08
|
- **status**: open-fixed --> closed-fixed - **Comment**: The issue is fixed in Docutils 0.22 released 2025-07-29. Thank you for the patch. --- **[patches:#187] Rename .txt files to .rst** **Status:** closed-fixed **Group:** None **Created:** Wed Jan 05, 2022 05:51 PM UTC by Adam Turner **Last Updated:** Thu Aug 15, 2024 08:20 AM UTC **Owner:** Adam Turner This change is in two parts -- the first commit does the rename and the second goes through and updates references to .txt files. All tests pass. The benefit of this change is primarily for people -- on user interfaces with syntax highlighting (e.g. IntelliJ / VSCode / Notepad++ editors, code mirrors, etc), the text is presented natively as reStructuredText, and editor features can assist with e.g. autocompletion. Docutils itself of course does not care which file extension is used. I have not renamed any of the include files or template files in `docutils.parsers` or `docutils.writers`, as they form part of the public API and would need a deprecation cycle (or aliasing in the parsing code) A Please see https://github.com/AA-Turner/docutils/pull/3 and https://github.com/AA-Turner/docutils/pull/3.patch for the commits and patch. --- Sent from sourceforge.net because doc...@li... is subscribed to https://sourceforge.net/p/docutils/patches/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/docutils/admin/patches/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Günter M. <mi...@us...> - 2025-07-30 09:29:11
|
- **status**: open-accepted --> closed-accepted
- **Comment**:
The patch is in Docutils 0.22 released 2025-07-29.
Thanks again.
---
**[patches:#211] Doctest nodes have incorrect `line` field **
**Status:** closed-accepted
**Group:** None
**Created:** Thu Sep 12, 2024 09:39 AM UTC by Hood Chatham
**Last Updated:** Mon Nov 11, 2024 05:40 PM UTC
**Owner:** nobody
For most nodes, `node.line` refers to the source line that the node started on. However, doctest nodes report the end line.
This can be fixed with the following patch:
```patch
--- a/docutils/docutils/parsers/rst/states.py
+++ b/docutils/docutils/parsers/rst/states.py
@@ -1587,11 +1587,14 @@ def parse_option_marker(self, match):
return optlist
def doctest(self, match, context, next_state):
+ line = self.document.current_line
data = '\n'.join(self.state_machine.get_text_block())
# TODO: prepend class value ['pycon'] (Python Console)
# parse with `directives.body.CodeBlock` (returns literal-block
# with class "code" and syntax highlight markup).
- self.parent += nodes.doctest_block(data, data)
+ n = nodes.doctest_block(data, data)
+ n.line = line
+ self.parent += n
return [], next_state, []
def line_block(self, match, context, next_state):
```
---
Sent from sourceforge.net because doc...@li... is subscribed to https://sourceforge.net/p/docutils/patches/
To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/docutils/admin/patches/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Günter M. <mi...@us...> - 2025-07-30 09:27:40
|
- **status**: open-fixed --> closed-fixed - **Comment**: The issue is fixed in Docutils 0.22 released 2025-07-29. Thank you for the patch. --- **[patches:#213] Change section handling to not rely on exceptions and reparsing** **Status:** closed-fixed **Group:** None **Created:** Wed Mar 26, 2025 07:57 PM UTC by Arne Skjærholt **Last Updated:** Fri Apr 25, 2025 10:37 AM UTC **Owner:** nobody **Attachments:** - [section-handling.patch](https://sourceforge.net/p/docutils/patches/213/attachment/section-handling.patch) (13.3 kB; text/x-patch) While waiting for responses to an email I sent to the -users I decided to dig further into the issue and ended up implementing a fix. To recap my issue, I was having problems with a custom directive's nested parse of its content when section headers were used, because the existing code throws an EOFError up the chain to find the correct place to attach a new section. The proposed patch changes this by adding an explicit stack of sections to the memo object instead of using the Python call stack, and changing RSTState.section() to unwind this state in-place, instead of using exception throwing to find the right place. In fact, I think this is the kind of implementation suggested as an alternative in a comment in the existing code. This also lets us get rid of memo.section_bubble_up_kludge and Line.eofcheck, which only existed to handle the exceptions. In addition to the changed code, I've had to make six changes to the test suite. - Three diagnostics in test/functional/expected/standalone_rst_pseudoxml.txt now have line numbers relative to the beginning of the file rather than some other element. I think because we no longer initiate a nested parse for sections. - Two diagnostics in test/test_parsers/test_rst/test_targets.py have different line numbers, indicating the second conflicting label, rather than the implicit label generated by the section. I think the reason is that due to the exception throwing approach, the existing code handled the section label later than the other, even if the section is earlier in the text. - test/test_parsers/test_rst/test_section_headers.py has one diagnostic output less. I think this diagnostic is a duplicate, caused by the rethrowing of the exception for bubbling up the stack. --- Sent from sourceforge.net because doc...@li... is subscribed to https://sourceforge.net/p/docutils/patches/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/docutils/admin/patches/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Günter M. <mi...@us...> - 2025-07-30 09:26:01
|
- **labels**: --> emacs mode - **Group**: --> Default --- **[feature-requests:#5] Emacs support; decoration styles** **Status:** open-accepted **Group:** Default **Labels:** emacs mode **Created:** Wed Nov 16, 2005 08:42 AM UTC by Lalo Martins **Last Updated:** Wed Nov 16, 2005 04:06 PM UTC **Owner:** Martin Blais The title decoration code allows for indentation in over-and-under decorations \(rst-default-indent\). In my "under" decorations, however, I like to run the decoration one space bigger than the text. Another style I have seen is to run decorations to the full document width, regardless of the title text. \(In this style, over-and-under titles are usually centred.\) It would be neat if rst.el had customizable options allowing all these styles. Suggestion: rst-right-only-indent for "under" decorations. If rst-default-indent is nil \(rather than 0\), the over-and-under deco goes to the right margin and the text is centred. If rst-right-only-indent is nil \(rather than 0\), the "under" deco goes to the right margin. --- Sent from sourceforge.net because doc...@li... is subscribed to https://sourceforge.net/p/docutils/feature-requests/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/docutils/admin/feature-requests/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Günter M. <mi...@us...> - 2025-07-30 09:23:46
|
- **status**: open-fixed --> closed-fixed - **Comment**: The issue is fixed in Docutils 0.22 released 2025-07-29. Thank you for reporting. --- **[feature-requests:#44] Add :figname: option to the figure directive** **Status:** closed-fixed **Group:** Default **Created:** Wed Mar 11, 2015 03:25 PM UTC by Jellby **Last Updated:** Wed Apr 23, 2025 03:55 PM UTC **Owner:** nobody As suggested in https://sourceforge.net/p/docutils/bugs/274/, I fill a feature request for a :figname: option to figure, so I can add a name to a figure and not to the image inside. --- Sent from sourceforge.net because doc...@li... is subscribed to https://sourceforge.net/p/docutils/feature-requests/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/docutils/admin/feature-requests/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Günter M. <mi...@us...> - 2025-07-30 09:23:05
|
- **status**: open-fixed --> closed-fixed - **Comment**: The issue is fixed in Docutils 0.22 released 2025-07-29. Thank you for reporting. --- **[feature-requests:#57] add vh and vw as allowable length units** **Status:** closed-fixed **Group:** Default **Created:** Fri Oct 13, 2017 09:31 AM UTC by Robin Shannon **Last Updated:** Tue Oct 01, 2024 07:22 AM UTC **Owner:** nobody In css, vh and vw are percentages of the view-window. It would be nice if these were added to the allowable length units (line 225 in parsers/rst/directives/__init__.py). For non html outputs it might make sense to convert them into percentages. --- Sent from sourceforge.net because doc...@li... is subscribed to https://sourceforge.net/p/docutils/feature-requests/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/docutils/admin/feature-requests/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |
|
From: Günter M. <mi...@us...> - 2025-07-30 09:22:18
|
- **status**: open-fixed --> closed-fixed --- **[feature-requests:#60] Allow definition_list_item to have multiple terms** **Status:** closed-fixed **Group:** Default **Created:** Thu Jan 03, 2019 09:10 AM UTC by Takeshi KOMIYA **Last Updated:** Wed Jul 30, 2025 09:22 AM UTC **Owner:** nobody **Attachments:** - [support_multiple_terms_on_definition_list_item.patch](https://sourceforge.net/p/docutils/feature-requests/60/attachment/support_multiple_terms_on_definition_list_item.patch) (3.7 kB; application/octet-stream) In HTML spec, definition list accepts multiple terms in a item. This patch allows doctree model to have multiple terms as children of definition_list_item also. https://www.w3.org/TR/html52/grouping-content.html#the-dl-element In sphinx, a custom directive named "glossary" allows multiple terms for one definition_list_item. https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#glossary --- Sent from sourceforge.net because doc...@li... is subscribed to https://sourceforge.net/p/docutils/feature-requests/ To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/docutils/admin/feature-requests/options. Or, if this is a mailing list, you can unsubscribe from the mailing list. |