def create_loader(pack_name, filepath): ext = filepath.ext if ext in ilm.SOURCE_SUFFIXES: return ilm.SourceFileLoader(pack_name, str(filepath)) if ext in ilm.BYTECODE_SUFFIXES: return ilm.SourcelessFileLoader(pack_name, str(filepath)) if ext in ilm.EXTENSION_SUFFIXES: return ilm.ExtensionFileLoader(pack_name, str(filepath))
def w_load_from_name(self, name, origin=None, use_prefix=True): from importlib import machinery, util if not origin: module = self.import_module(name=self.name, use_imp=True) origin = module.__loader__.path if use_prefix: name = '_testmultiphase_' + name loader = machinery.ExtensionFileLoader(name, origin) spec = util.spec_from_loader(name, loader) module = util.module_from_spec(spec) loader.exec_module(module) return module
def _import_module(module_name, extension_name=None): if extension_name is None: sub_mod_name = module_name.split(".")[-1] extension_name = f"sstcam_{sub_mod_name}" mod_path = _os.path.join(_get_extension_dir(), extension_name) loader = machinery.ExtensionFileLoader(extension_name, mod_path) spec = importlib.util.spec_from_loader(extension_name, loader) mod = loader.create_module(spec) loader.exec_module(mod) for name, attr in mod.__dict__.items(): if name[0] == "_": continue setattr(sys.modules[module_name], name, attr) return mod
def load_module(self, fullname): """Actually load a module that we said we'd handle in find_module.""" import tempfile filename = self.modules[fullname] prefix, ext = self.splitext(filename) with tempfile.NamedTemporaryFile(suffix=ext, prefix=os.path.basename(prefix)) as f: f.write(self.zf.read(filename)) f.flush() if PY_VERSION < 3: suffix = self.suffixes[ext] mod = imp.load_module(fullname, None, f.name, suffix) else: mod = machinery.ExtensionFileLoader(fullname, f.name).load_module() # Make it look like module came from the original location for nicer tracebacks. mod.__file__ = filename return mod
def setUp(self): self.loader = machinery.ExtensionFileLoader(ext_util.NAME, ext_util.FILEPATH)
def test_is_package(self): self.assertFalse(self.loader.is_package(ext_util.NAME)) for suffix in machinery.EXTENSION_SUFFIXES: path = os.path.join('some', 'path', 'pkg', '__init__' + suffix) loader = machinery.ExtensionFileLoader('pkg', path) self.assertTrue(loader.is_package('pkg'))