summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Doc/library/importlib.rst23
1 files changed, 23 insertions, 0 deletions
diff --git a/Doc/library/importlib.rst b/Doc/library/importlib.rst
index 99bfeac..f7286d2 100644
--- a/Doc/library/importlib.rst
+++ b/Doc/library/importlib.rst
@@ -1719,6 +1719,29 @@ To import a Python source file directly, use the following recipe
spec.loader.exec_module(module)
+Implementing lazy imports
+'''''''''''''''''''''''''
+
+The example below shows how to implement lazy imports::
+
+ >>> import importlib.util
+ >>> import sys
+ >>> def lazy_import(name):
+ ... spec = importlib.util.find_spec(name)
+ ... loader = importlib.util.LazyLoader(spec.loader)
+ ... spec.loader = loader
+ ... module = importlib.util.module_from_spec(spec)
+ ... sys.modules[name] = module
+ ... loader.exec_module(module)
+ ... return module
+ ...
+ >>> lazy_typing = lazy_import("typing")
+ >>> #lazy_typing is a real module object,
+ >>> #but it is not loaded in memory yet.
+ >>> lazy_typing.TYPE_CHECKING
+ False
+
+
Setting up an importer
''''''''''''''''''''''