From b89edeeb0e348431e6b935544669ecd21e915fc7 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sun, 5 Apr 2020 13:59:42 +0900 Subject: [PATCH] Fix #7409: Convert configuration values on late config-inited event This changes a priority for config-inited handlers of core modules to invoke them at the late of the event. It allows extensions to modify configurations. --- CHANGES | 2 ++ sphinx/builders/epub3.py | 4 ++-- sphinx/builders/html/__init__.py | 12 ++++++------ sphinx/builders/latex/__init__.py | 2 +- sphinx/config.py | 8 ++++---- sphinx/ext/intersphinx.py | 2 +- sphinx/extension.py | 2 +- sphinx/registry.py | 2 +- 8 files changed, 18 insertions(+), 16 deletions(-) diff --git a/CHANGES b/CHANGES index 9c60620eb0..1f448e9d9e 100644 --- a/CHANGES +++ b/CHANGES @@ -31,6 +31,8 @@ Bugs fixed * #7301: capital characters are not allowed for node_id * #7301: epub: duplicated node_ids are generated * #6564: html: a width of table was ignored on HTML builder +* #7409: intersphinx: ValueError is raised when an extension sets up + :confval:`intersphinx_mapping` on :event:`config-inited` event Testing -------- diff --git a/sphinx/builders/epub3.py b/sphinx/builders/epub3.py index 5d7121fe6d..f01f21c69e 100644 --- a/sphinx/builders/epub3.py +++ b/sphinx/builders/epub3.py @@ -282,8 +282,8 @@ def setup(app: Sphinx) -> Dict[str, Any]: ENUM('horizontal', 'vertical')) # event handlers - app.connect('config-inited', convert_epub_css_files) - app.connect('builder-inited', validate_config_values) + app.connect('config-inited', convert_epub_css_files, priority=800) + app.connect('config-inited', validate_config_values, priority=800) return { 'version': 'builtin', diff --git a/sphinx/builders/html/__init__.py b/sphinx/builders/html/__init__.py index 6488146d57..320c7feb6b 100644 --- a/sphinx/builders/html/__init__.py +++ b/sphinx/builders/html/__init__.py @@ -1231,12 +1231,12 @@ def setup(app: Sphinx) -> Dict[str, Any]: app.add_config_value('html4_writer', False, 'html') # event handlers - app.connect('config-inited', convert_html_css_files) - app.connect('config-inited', convert_html_js_files) - app.connect('config-inited', validate_html_extra_path) - app.connect('config-inited', validate_html_static_path) - app.connect('config-inited', validate_html_logo) - app.connect('config-inited', validate_html_favicon) + app.connect('config-inited', convert_html_css_files, priority=800) + app.connect('config-inited', convert_html_js_files, priority=800) + app.connect('config-inited', validate_html_extra_path, priority=800) + app.connect('config-inited', validate_html_static_path, priority=800) + app.connect('config-inited', validate_html_logo, priority=800) + app.connect('config-inited', validate_html_favicon, priority=800) app.connect('builder-inited', validate_math_renderer) app.connect('html-page-context', setup_js_tag_helper) diff --git a/sphinx/builders/latex/__init__.py b/sphinx/builders/latex/__init__.py index 1348f0e125..390a5d9c7b 100644 --- a/sphinx/builders/latex/__init__.py +++ b/sphinx/builders/latex/__init__.py @@ -536,7 +536,7 @@ def setup(app: Sphinx) -> Dict[str, Any]: app.setup_extension('sphinx.builders.latex.transforms') app.add_builder(LaTeXBuilder) - app.connect('config-inited', validate_config_values) + app.connect('config-inited', validate_config_values, priority=800) app.add_config_value('latex_engine', default_latex_engine, None, ENUM('pdflatex', 'xelatex', 'lualatex', 'platex', 'uplatex')) diff --git a/sphinx/config.py b/sphinx/config.py index 87007c33d0..b4824fa7dc 100644 --- a/sphinx/config.py +++ b/sphinx/config.py @@ -478,11 +478,11 @@ def check_master_doc(app: "Sphinx", env: "BuildEnvironment", added: Set[str], def setup(app: "Sphinx") -> Dict[str, Any]: - app.connect('config-inited', convert_source_suffix) - app.connect('config-inited', init_numfig_format) - app.connect('config-inited', correct_copyright_year) + app.connect('config-inited', convert_source_suffix, priority=800) + app.connect('config-inited', init_numfig_format, priority=800) + app.connect('config-inited', correct_copyright_year, priority=800) app.connect('config-inited', check_confval_types) - app.connect('config-inited', check_primary_domain) + app.connect('config-inited', check_primary_domain, priority=800) app.connect('env-get-outdated', check_master_doc) return { diff --git a/sphinx/ext/intersphinx.py b/sphinx/ext/intersphinx.py index 5aa9c75f0f..02f605bacf 100644 --- a/sphinx/ext/intersphinx.py +++ b/sphinx/ext/intersphinx.py @@ -367,7 +367,7 @@ def setup(app: Sphinx) -> Dict[str, Any]: app.add_config_value('intersphinx_mapping', {}, True) app.add_config_value('intersphinx_cache_limit', 5, False) app.add_config_value('intersphinx_timeout', None, False) - app.connect('config-inited', normalize_intersphinx_mapping) + app.connect('config-inited', normalize_intersphinx_mapping, priority=800) app.connect('builder-inited', load_mappings) app.connect('missing-reference', missing_reference) return { diff --git a/sphinx/extension.py b/sphinx/extension.py index 45ea46677d..fa7a0d490c 100644 --- a/sphinx/extension.py +++ b/sphinx/extension.py @@ -60,7 +60,7 @@ def verify_needs_extensions(app: "Sphinx", config: Config) -> None: def setup(app: "Sphinx") -> Dict[str, Any]: - app.connect('config-inited', verify_needs_extensions) + app.connect('config-inited', verify_needs_extensions, priority=800) return { 'version': 'builtin', diff --git a/sphinx/registry.py b/sphinx/registry.py index 93a7ebc253..200f59d422 100644 --- a/sphinx/registry.py +++ b/sphinx/registry.py @@ -453,7 +453,7 @@ def merge_source_suffix(app: "Sphinx", config: Config) -> None: def setup(app: "Sphinx") -> Dict[str, Any]: - app.connect('config-inited', merge_source_suffix) + app.connect('config-inited', merge_source_suffix, priority=800) return { 'version': 'builtin',