diff options
author | Takeshi KOMIYA <i.tkomiya@gmail.com> | 2021-02-25 19:51:01 +0300 |
---|---|---|
committer | Takeshi KOMIYA <i.tkomiya@gmail.com> | 2021-02-25 20:02:09 +0300 |
commit | 255b4aee051e3318eb8fe42e606f321183736f8c (patch) | |
tree | d41177caa610f29e92fc10392b360b97f3a09ab3 /sphinx/ext | |
parent | 43925579437a111c96c9147594e7ad594deb8c68 (diff) |
Fix #8933: viewcode: Failed to create back-links on parallel build
On parallel build mode, viewcode losts the back-links information on
gathering results from each process. As a result, some back-links are
missing in the generated viewcode pages.
This fixes the merging back-links process for parallel builds.
Diffstat (limited to 'sphinx/ext')
-rw-r--r-- | sphinx/ext/viewcode.py | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/sphinx/ext/viewcode.py b/sphinx/ext/viewcode.py index 6bedf2e1c..c98ff0c88 100644 --- a/sphinx/ext/viewcode.py +++ b/sphinx/ext/viewcode.py @@ -146,7 +146,14 @@ def env_merge_info(app: Sphinx, env: BuildEnvironment, docnames: Iterable[str], if not hasattr(env, '_viewcode_modules'): env._viewcode_modules = {} # type: ignore # now merge in the information from the subprocess - env._viewcode_modules.update(other._viewcode_modules) # type: ignore + for modname, entry in other._viewcode_modules.items(): # type: ignore + if modname not in env._viewcode_modules: # type: ignore + env._viewcode_modules[modname] = entry # type: ignore + else: + used = env._viewcode_modules[modname][2] # type: ignore + for fullname, docname in entry[2].items(): + if fullname not in used: + used[fullname] = docname def env_purge_doc(app: Sphinx, env: BuildEnvironment, docname: str) -> None: |