From 95e7092d925b5c3944d699dd87a84785f4043374 Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+aa-turner@users.noreply.github.com> Date: Sat, 19 Oct 2024 21:24:41 +0100 Subject: [PATCH] Improve the performance of ``PythonDomain.clear_doc()`` --- sphinx/domains/python/__init__.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/sphinx/domains/python/__init__.py b/sphinx/domains/python/__init__.py index bc6099c2e..cac8e0176 100644 --- a/sphinx/domains/python/__init__.py +++ b/sphinx/domains/python/__init__.py @@ -714,12 +714,16 @@ class PythonDomain(Domain): synopsis, platform, deprecated) def clear_doc(self, docname: str) -> None: - for fullname, obj in list(self.objects.items()): - if obj.docname == docname: - del self.objects[fullname] - for modname, mod in list(self.modules.items()): - if mod.docname == docname: - del self.modules[modname] + to_remove = [ + fullname for fullname, obj in self.objects.items() if obj.docname == docname + ] + for fullname in to_remove: + del self.objects[fullname] + to_remove = [ + modname for modname, mod in self.modules.items() if mod.docname == docname + ] + for fullname in to_remove: + del self.modules[fullname] def merge_domaindata(self, docnames: Set[str], otherdata: dict[str, Any]) -> None: # XXX check duplicates?