class Simulation(Layer): """ Layer containing simulation related info. """ def __init__(self, simulation=None): super(Simulation, self).__init__(simulation) self.sim_src = {} self.sim_obj = {} self.simulation = Registry() def add(self, sim_src, module, package=None): """ """ # import module mod = importlib.import_module(module, package) if sim_src.startswith('_'): err_msg = 'No "%s" attribute in "%s".' % (sim_src, mod) raise AttributeError(err_msg) self.sim_src[sim_src] = getattr(mod, sim_src) def open(self, sim_src, filename, path=None): filename = os.path.join(path, filename) # call constructor of sim source with filename argument self.sim_obj[sim_src] = self.sim_src[sim_src](filename) # register simulation in registry, the only reason to register an item # is make sure it doesn't overwrite other items self.simulation.register({sim_src: self.sim_obj[sim_src]}) def load(self): """ Add sim_src to layer. """ for k, v in self.layer.iteritems(): self.add(k, v['module'], v.get('package')) self.open(k, v['filename'], v.get('path'))
def __init__(self, simulation=None): super(Simulation, self).__init__(simulation) self.sim_src = {} self.sim_obj = {} self.simulation = Registry()