Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/sphinx-doc/sphinx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakeshi KOMIYA <i.tkomiya@gmail.com>2021-02-25 19:51:01 +0300
committerTakeshi KOMIYA <i.tkomiya@gmail.com>2021-02-25 20:02:09 +0300
commit255b4aee051e3318eb8fe42e606f321183736f8c (patch)
treed41177caa610f29e92fc10392b360b97f3a09ab3 /sphinx/ext
parent43925579437a111c96c9147594e7ad594deb8c68 (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.py9
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: