--- Doc/tools/extensions/c_annotations.py | 6 +++++- Doc/tools/extensions/glossary_search.py | 12 ++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) Index: Python-3.12.10/Doc/tools/extensions/c_annotations.py =================================================================== --- Python-3.12.10.orig/Doc/tools/extensions/c_annotations.py 2025-04-08 13:35:47.000000000 +0200 +++ Python-3.12.10/Doc/tools/extensions/c_annotations.py 2025-04-11 21:16:39.007011463 +0200 @@ -117,7 +117,11 @@ state = app.env.domaindata["c_annotations"] refcount_data = state["refcount_data"] stable_abi_data = state["stable_abi_data"] - for node in doctree.findall(addnodes.desc_content): + try: + findall = doctree.findall + except AttributeError: + findall = doctree.traverse + for node in findall(addnodes.desc_content): par = node.parent if par["domain"] != "c": continue Index: Python-3.12.10/Doc/tools/extensions/glossary_search.py =================================================================== --- Python-3.12.10.orig/Doc/tools/extensions/glossary_search.py 2025-04-08 13:35:47.000000000 +0200 +++ Python-3.12.10/Doc/tools/extensions/glossary_search.py 2025-04-11 21:16:39.007340209 +0200 @@ -30,8 +30,16 @@ else: terms = app.env.glossary_terms = {} - for node in doctree.findall(glossary): - for glossary_item in node.findall(nodes.definition_list_item): + try: + findall = doctree.findall + except AttributeError: + findall = doctree.traverse + for node in findall(glossary): + try: + node_findall = node.findall + except AttributeError: + node_findall = node.traverse + for glossary_item in node_findall(nodes.definition_list_item): term = glossary_item[0].astext() definition = glossary_item[-1]