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?