"""modulehacker module"""
import sys
import importlib
_hackers = []
def register(obj):
_hackers.append(obj)
class Hacker:
def hack(self, module):
return module
class Loader:
def __init__(self):
self.module = None
def find_module(self, name, path):
sys.meta_path.remove(self)
self.module = importlib.import_module(name)
sys.meta_path.insert(0, self)
return self
def load_module(self, name):
if not self.module:
raise ImportError("Unable to load module.")
module = self.module
for hacker in _hackers:
module = hacker.hack(module)
sys.modules[name] = module
return module
sys.meta_path.insert(0, Loader())