Source: sphinx-argparse Version: 0.2.5-1 Severity: important Tags: patch Control: affects -1 src:python-pyproj
Dear Maintainer, As reported in #982698, python-pyproj FTBFS due to sphinx failing: PYTHONPATH=/build/python-pyproj/.pybuild/cpython3_3.9_pyproj/build make -C /build/python-pyproj/docs man make[2]: Entering directory '/build/python-pyproj/docs' Running Sphinx v3.4.3 making output directory... done building [mo]: targets for 0 po files that are out of date building [man]: all manpages updating environment: [new config] 33 added, 0 changed, 0 removed reading sources... [ 3%] advanced_examples reading sources... [ 6%] api/aoi reading sources... [ 9%] api/crs/coordinate_operation reading sources... [ 12%] api/crs/coordinate_system reading sources... [ 15%] api/crs/crs reading sources... [ 18%] api/crs/datum reading sources... [ 21%] api/crs/enums reading sources... [ 24%] api/crs/index reading sources... [ 27%] api/database reading sources... [ 30%] api/datadir reading sources... [ 33%] api/enums reading sources... [ 36%] api/exceptions reading sources... [ 39%] api/geod reading sources... [ 42%] api/global_context reading sources... [ 45%] api/index reading sources... [ 48%] api/list reading sources... [ 51%] api/network reading sources... [ 54%] api/proj reading sources... [ 57%] api/show_versions reading sources... [ 60%] api/sync reading sources... [ 63%] api/transformer reading sources... [ 66%] build_crs reading sources... [ 69%] build_crs_cf reading sources... [ 72%] cli Exception occurred: File "/usr/lib/python3/dist-packages/sphinxarg/parser.py", line 40, in _try_add_parser_attribute data[attribname] = attribval % {'prog': data['prog']} KeyError: 'prog' The full traceback has been saved in /tmp/sphinx-err-c2bpk2op.log, if you want to report the issue to the developers. Please also report this if it was a user error, so that a better error message can be provided next time. A bug report can be filed in the tracker at <https://github.com/sphinx-doc/sphinx/issues>. Thanks! The content of /tmp/sphinx-err-c2bpk2op.log: # Sphinx version: 3.4.3 # Python version: 3.9.2 (CPython) # Docutils version: 0.16 release # Jinja2 version: 2.11.3 # Last messages: # reading sources... [ 45%] api/index # reading sources... [ 48%] api/list # reading sources... [ 51%] api/network # reading sources... [ 54%] api/proj # reading sources... [ 57%] api/show_versions # reading sources... [ 60%] api/sync # reading sources... [ 63%] api/transformer # reading sources... [ 66%] build_crs # reading sources... [ 69%] build_crs_cf # reading sources... [ 72%] cli # Loaded extensions: # sphinx.ext.mathjax (3.4.3) from /usr/lib/python3/dist-packages/sphinx/ext/mathjax.py # alabaster (0.7.8) from /usr/lib/python3/dist-packages/alabaster/__init__.py # sphinx.ext.autodoc.type_comment (3.4.3) from /usr/lib/python3/dist-packages/sphinx/ext/autodoc/type_comment.py # sphinx.ext.autodoc (3.4.3) from /usr/lib/python3/dist-packages/sphinx/ext/autodoc/__init__.py # sphinx.ext.viewcode (3.4.3) from /usr/lib/python3/dist-packages/sphinx/ext/viewcode.py # sphinx.ext.napoleon (3.4.3) from /usr/lib/python3/dist-packages/sphinx/ext/napoleon/__init__.py # sphinx.ext.intersphinx (3.4.3) from /usr/lib/python3/dist-packages/sphinx/ext/intersphinx.py # sphinxarg.ext (unknown version) from /usr/lib/python3/dist-packages/sphinxarg/ext.py Traceback (most recent call last): File "/usr/lib/python3/dist-packages/sphinx/cmd/build.py", line 280, in build_main app.build(args.force_all, filenames) File "/usr/lib/python3/dist-packages/sphinx/application.py", line 346, in build self.builder.build_update() File "/usr/lib/python3/dist-packages/sphinx/builders/__init__.py", line 293, in build_update self.build(['__all__'], to_build) File "/usr/lib/python3/dist-packages/sphinx/builders/__init__.py", line 310, in build updated_docnames = set(self.read()) File "/usr/lib/python3/dist-packages/sphinx/builders/__init__.py", line 417, in read self._read_serial(docnames) File "/usr/lib/python3/dist-packages/sphinx/builders/__init__.py", line 438, in _read_serial self.read_doc(docname) File "/usr/lib/python3/dist-packages/sphinx/builders/__init__.py", line 478, in read_doc doctree = read_doc(self.app, self.env, self.env.doc2path(docname)) File "/usr/lib/python3/dist-packages/sphinx/io.py", line 221, in read_doc pub.publish() File "/usr/lib/python3/dist-packages/docutils/core.py", line 217, in publish self.document = self.reader.read(self.source, self.parser, File "/usr/lib/python3/dist-packages/sphinx/io.py", line 126, in read self.parse() File "/usr/lib/python3/dist-packages/docutils/readers/__init__.py", line 77, in parse self.parser.parse(self.input, document) File "/usr/lib/python3/dist-packages/sphinx/parsers.py", line 104, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3/dist-packages/docutils/parsers/rst/states.py", line 171, in run results = StateMachineWS.run(self, input_lines, input_offset, File "/usr/lib/python3/dist-packages/docutils/statemachine.py", line 241, in run context, next_state, result = self.check_line( File "/usr/lib/python3/dist-packages/docutils/statemachine.py", line 459, in check_line return method(match, context, next_state) File "/usr/lib/python3/dist-packages/docutils/parsers/rst/states.py", line 2770, in underline self.section(title, source, style, lineno - 1, messages) File "/usr/lib/python3/dist-packages/docutils/parsers/rst/states.py", line 328, in section self.new_subsection(title, lineno, messages) File "/usr/lib/python3/dist-packages/docutils/parsers/rst/states.py", line 394, in new_subsection newabsoffset = self.nested_parse( File "/usr/lib/python3/dist-packages/docutils/parsers/rst/states.py", line 282, in nested_parse state_machine.run(block, input_offset, memo=self.memo, File "/usr/lib/python3/dist-packages/docutils/parsers/rst/states.py", line 197, in run results = StateMachineWS.run(self, input_lines, input_offset) File "/usr/lib/python3/dist-packages/docutils/statemachine.py", line 241, in run context, next_state, result = self.check_line( File "/usr/lib/python3/dist-packages/docutils/statemachine.py", line 459, in check_line return method(match, context, next_state) File "/usr/lib/python3/dist-packages/docutils/parsers/rst/states.py", line 2343, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) File "/usr/lib/python3/dist-packages/docutils/parsers/rst/states.py", line 2355, in explicit_construct return method(self, expmatch) File "/usr/lib/python3/dist-packages/docutils/parsers/rst/states.py", line 2097, in directive return self.run_directive( File "/usr/lib/python3/dist-packages/docutils/parsers/rst/states.py", line 2147, in run_directive result = directive_instance.run() File "/usr/lib/python3/dist-packages/sphinxarg/ext.py", line 467, in run result = parse_parser( File "/usr/lib/python3/dist-packages/sphinxarg/parser.py", line 95, in parse_parser parse_parser(subaction, subdata, **kwargs) File "/usr/lib/python3/dist-packages/sphinxarg/parser.py", line 62, in parse_parser _try_add_parser_attribute(data, parser, 'description') File "/usr/lib/python3/dist-packages/sphinxarg/parser.py", line 40, in _try_add_parser_attribute data[attribname] = attribval % {'prog': data['prog']} KeyError: 'prog' This change in pytest_prog_name_varies.patch is the cause: --- sphinx-argparse.orig/sphinxarg/parser.py +++ sphinx-argparse/sphinxarg/parser.py @@ -37,7 +37,7 @@ if not isinstance(attribval, str): return if len(attribval) > 0: - data[attribname] = attribval + data[attribname] = attribval % {'prog': data['prog']} def _format_usage_without_prefix(parser): Reverting this change fixes the issue. If the change is required for other cases, something like the following may be appropriate to fix the KeyError: if 'prog' in data: data[attribname] = attribval % {'prog': data['prog']} else: data[attribname] = attribval Kind Regards, Bas