From 263977a8c88828f1b29acd60ed54130412e257eb Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 3 May 2024 04:49:05 -0500 Subject: [PATCH] PYTHON-4424 Add workaround for ModuleNotFoundError TypeError (#1628) --- pymongo/_lazy_import.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/pymongo/_lazy_import.py b/pymongo/_lazy_import.py index 6e6d59a02..888339d03 100644 --- a/pymongo/_lazy_import.py +++ b/pymongo/_lazy_import.py @@ -23,12 +23,17 @@ def lazy_import(name: str) -> ModuleType: From https://docs.python.org/3/library/importlib.html#implementing-lazy-imports """ + # Workaround for PYTHON-4424. + if "__compiled__" in globals(): + return importlib.import_module(name) try: spec = importlib.util.find_spec(name) except ValueError: - raise ModuleNotFoundError(name=name) from None + # Note: this cannot be ModuleNotFoundError, see PYTHON-4424. + raise ImportError(name=name) from None if spec is None: - raise ModuleNotFoundError(name=name) + # Note: this cannot be ModuleNotFoundError, see PYTHON-4424. + raise ImportError(name=name) assert spec is not None loader = importlib.util.LazyLoader(spec.loader) # type:ignore[arg-type] spec.loader = loader