From 2de7c35573f557798fc65c17c8830178321c0a78 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sun, 13 Jun 2021 23:11:47 +0900 Subject: [PATCH] Fix #9322: KeyError is raised on PropagateDescDomain transform PropageteDescDomain applies the domain name from the "domain" attribute of parent node (desc node) to the desc_signature node. The structure has longly generated by ObjectDescription. But it must not be a new rule. This allows to build document that contains non standard doctree. --- CHANGES | 1 + sphinx/transforms/post_transforms/__init__.py | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 6710a63a5a3..73808f7c0fc 100644 --- a/CHANGES +++ b/CHANGES @@ -17,6 +17,7 @@ Bugs fixed ---------- * #9313: LaTeX: complex table with merged cells broken since 4.0 +* #9322: KeyError is raised on PropagateDescDomain transform Testing -------- diff --git a/sphinx/transforms/post_transforms/__init__.py b/sphinx/transforms/post_transforms/__init__.py index dde06fae1be..7f4b3e3a691 100644 --- a/sphinx/transforms/post_transforms/__init__.py +++ b/sphinx/transforms/post_transforms/__init__.py @@ -249,7 +249,8 @@ class PropagateDescDomain(SphinxPostTransform): def run(self, **kwargs: Any) -> None: for node in self.document.traverse(addnodes.desc_signature): - node['classes'].append(node.parent['domain']) + if node.parent.get('domain'): + node['classes'].append(node.parent['domain']) def setup(app: Sphinx) -> Dict[str, Any]: