From 5cd184fa32e29bc9c690ce15346b9fccea5f5df2 Mon Sep 17 00:00:00 2001 From: correctmost <134317971+correctmost@users.noreply.github.com> Date: Fri, 10 May 2024 15:46:58 -0400 Subject: [PATCH] Improve performance of _get_zipimporters _get_zipimporters can call isinstance millions of times when running pylint's import-error checker on a codebase like yt-dlp. Checking for None first avoids the overhead of invoking isinstance. Closes pylint-dev/pylint#9607. --- astroid/interpreter/_import/spec.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/astroid/interpreter/_import/spec.py b/astroid/interpreter/_import/spec.py index 469508da83..59546a016a 100644 --- a/astroid/interpreter/_import/spec.py +++ b/astroid/interpreter/_import/spec.py @@ -341,7 +341,7 @@ def _is_setuptools_namespace(location: pathlib.Path) -> bool: def _get_zipimporters() -> Iterator[tuple[str, zipimport.zipimporter]]: for filepath, importer in sys.path_importer_cache.items(): - if isinstance(importer, zipimport.zipimporter): + if importer is not None and isinstance(importer, zipimport.zipimporter): yield filepath, importer