| 39 | |
| 40 | |
| 41 | class TestingImporter(abc.MetaPathFinder, abc.Loader): |
| 42 | |
| 43 | module_name = 'lazy_loader_test' |
| 44 | mutated_name = 'changed' |
| 45 | loaded = None |
| 46 | load_count = 0 |
| 47 | source_code = 'attr = 42; __name__ = {!r}'.format(mutated_name) |
| 48 | |
| 49 | def find_spec(self, name, path, target=None): |
| 50 | if name != self.module_name: |
| 51 | return None |
| 52 | return util.spec_from_loader(name, util.LazyLoader(self)) |
| 53 | |
| 54 | def exec_module(self, module): |
| 55 | time.sleep(0.01) # Simulate a slow load. |
| 56 | exec(self.source_code, module.__dict__) |
| 57 | self.loaded = module |
| 58 | self.load_count += 1 |
| 59 | |
| 60 | |
| 61 | class LazyLoaderTests(unittest.TestCase): |
searching dependent graphs…