Skip to content

Commit 5bd725d

Browse files
committed
ENH: Delay loading of less likely modules
Using python -X importtime -c "import lazy_loader": Before ------ import time: self [us] | cumulative | imported package [...] import time: 131 | 22995 | lazy_loader After ----- import time: self [us] | cumulative | imported package [...] import time: 115 | 4248 | lazy_loader
1 parent 512d6fc commit 5bd725d

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

lazy_loader/__init__.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,11 @@
77
import ast
88
import importlib
99
import importlib.util
10-
import inspect
1110
import os
1211
import sys
1312
import types
1413
import warnings
1514

16-
try:
17-
import importlib_metadata
18-
except ImportError:
19-
import importlib.metadata as importlib_metadata
20-
2115
__all__ = ["attach", "load", "attach_stub"]
2216

2317

@@ -200,9 +194,13 @@ def myfunc():
200194
if not have_module:
201195
not_found_message = f"No module named '{fullname}'"
202196
elif require is not None:
203-
# Old style lazy loading to avoid polluting sys.modules
204197
import packaging.requirements
205198

199+
try:
200+
import importlib_metadata
201+
except ImportError:
202+
import importlib.metadata as importlib_metadata
203+
206204
req = packaging.requirements.Requirement(require)
207205
try:
208206
have_module = req.specifier.contains(
@@ -221,6 +219,8 @@ def myfunc():
221219
if not have_module:
222220
if error_on_import:
223221
raise ModuleNotFoundError(not_found_message)
222+
import inspect
223+
224224
try:
225225
parent = inspect.stack()[1]
226226
frame_data = {

0 commit comments

Comments
 (0)