Пример #1
0
 def new_module(self, source_code=None):
     loader = TestingImporter()
     if source_code is not None:
         loader.source_code = source_code
     spec = util.spec_from_loader(TestingImporter.module_name,
                                  util.LazyLoader(loader))
     module = spec.loader.create_module(spec)
     module.__spec__ = spec
     module.__loader__ = spec.loader
     spec.loader.exec_module(module)
     # Module is now lazy.
     self.assertIsNone(loader.loaded)
     return module
Пример #2
0
def _lazy_load(fullname):
    '''
    Lazy loading for simulation.

    From: https://stackoverflow.com/a/51126745/5962321
    '''
    try:
        return sys.modules[fullname]
    except KeyError:
        spec = imputil.find_spec(fullname)
        module = imputil.module_from_spec(spec)
        loader = imputil.LazyLoader(spec.loader)

        # setup module and insert into sys.modules
        loader.exec_module(module)

        return module
Пример #3
0
 def test_init(self):
     with self.assertRaises(TypeError):
         # Classes that don't define exec_module() trigger TypeError.
         util.LazyLoader(object)
Пример #4
0
 def find_spec(self, name, path, target=None):
     if name != self.module_name:
         return None
     return util.spec_from_loader(name, util.LazyLoader(self))
Пример #5
0
 def test_init(self):
     with self.assertRaises(TypeError):
         util.LazyLoader(object)