Mercurial > cpython-lru_cache-weakref
diff Lib/importlib/abc.py @ 55355:dfaf6de2c8ce
Implement the PEP 302 protocol for get_filename() as
importlib.abc.ExecutionLoader. PyLoader now inherits from this ABC instead of
InspectLoader directly. Both PyLoader and PyPycLoader provide concrete
implementations of get_filename in terms of source_path and bytecode_path.
| author | Brett Cannon <bcannon@gmail.com> |
|---|---|
| date | Mon, 20 Jul 2009 04:23:48 +0000 |
| parents | f50290797fb5 |
| children | ad917b8fd64c |
line wrap: on
line diff
--- a/Lib/importlib/abc.py Mon Jul 20 03:19:18 2009 +0000 +++ b/Lib/importlib/abc.py Mon Jul 20 04:23:48 2009 +0000 @@ -76,7 +76,23 @@ InspectLoader.register(machinery.FrozenImporter) -class PyLoader(_bootstrap.PyLoader, ResourceLoader, InspectLoader): +class ExecutionLoader(InspectLoader): + + """Abstract base class for loaders that wish to support the execution of + modules as scripts. + + This ABC represents one of the optional protocols specified in PEP 302. + + """ + + @abc.abstractmethod + def get_filename(self, fullname:str) -> str: + """Abstract method which should return the value that __file__ is to be + set to.""" + raise NotImplementedError + + +class PyLoader(_bootstrap.PyLoader, ResourceLoader, ExecutionLoader): """Abstract base class to assist in loading source code by requiring only back-end storage methods to be implemented.
