Improve the performance of `PythonDomain.clear_doc()`

This commit is contained in:
Adam Turner 2024-10-19 21:24:41 +01:00
parent e41617850f
commit 95e7092d92

View File

@ -714,12 +714,16 @@ class PythonDomain(Domain):
synopsis, platform, deprecated) synopsis, platform, deprecated)
def clear_doc(self, docname: str) -> None: def clear_doc(self, docname: str) -> None:
for fullname, obj in list(self.objects.items()): to_remove = [
if obj.docname == docname: fullname for fullname, obj in self.objects.items() if obj.docname == docname
del self.objects[fullname] ]
for modname, mod in list(self.modules.items()): for fullname in to_remove:
if mod.docname == docname: del self.objects[fullname]
del self.modules[modname] 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: def merge_domaindata(self, docnames: Set[str], otherdata: dict[str, Any]) -> None:
# XXX check duplicates? # XXX check duplicates?