1 """Subset of importlib.abc used to reduce importlib.util imports."""
2 from . import _bootstrap
3 import abc
4 import warnings
5
6
7 class ESC[4;38;5;81mLoader(metaclass=ESC[4;38;5;149mabcESC[4;38;5;149m.ESC[4;38;5;149mABCMeta):
8
9 """Abstract base class for import loaders."""
10
11 def create_module(self, spec):
12 """Return a module to initialize and into which to load.
13
14 This method should raise ImportError if anything prevents it
15 from creating a new module. It may return None to indicate
16 that the spec should create the new module.
17 """
18 # By default, defer to default semantics for the new module.
19 return None
20
21 # We don't define exec_module() here since that would break
22 # hasattr checks we do to support backward compatibility.
23
24 def load_module(self, fullname):
25 """Return the loaded module.
26
27 The module must be added to sys.modules and have import-related
28 attributes set properly. The fullname is a str.
29
30 ImportError is raised on failure.
31
32 This method is deprecated in favor of loader.exec_module(). If
33 exec_module() exists then it is used to provide a backwards-compatible
34 functionality for this method.
35
36 """
37 if not hasattr(self, 'exec_module'):
38 raise ImportError
39 # Warning implemented in _load_module_shim().
40 return _bootstrap._load_module_shim(self, fullname)
41
42 def module_repr(self, module):
43 """Return a module's repr.
44
45 Used by the module type when the method does not raise
46 NotImplementedError.
47
48 This method is deprecated.
49
50 """
51 warnings.warn("importlib.abc.Loader.module_repr() is deprecated and "
52 "slated for removal in Python 3.12", DeprecationWarning)
53 # The exception will cause ModuleType.__repr__ to ignore this method.
54 raise NotImplementedError