def _load_mirteFile(d, m): """ Loads the dictionary from the mirteFile into <m> """ defs = d['definitions'] if 'definitions' in d else {} insts = d['instances'] if 'instances' in d else {} # Filter out existing instances insts_to_skip = [] for k in insts: if k in m.insts: m.update_instance(k, dict(insts[k])) insts_to_skip.append(k) for k in insts_to_skip: del(insts[k]) # Sort module definitions by dependency it = sort_by_successors(defs.keys(), dual_cover(defs.keys(), restricted_cover(defs.keys(), depsOf_of_mirteFile_module_definition(defs)))) # Add module definitions for k in it: m.add_module_definition(k, module_definition_from_mirteFile_dict(m, defs[k])) # Sort instance declarations by dependency it = sort_by_successors(insts.keys(), dual_cover(insts.keys(), restricted_cover(insts.keys(), depsOf_of_mirteFile_instance_definition(m, insts)))) # Create instances for k in it: settings = dict(insts[k]) del(settings['module']) m.create_instance(k, insts[k]['module'], settings)
def verify(self, *facts): todo = list(facts) facts = set() while len(todo)>0: fact = todo.pop() if fact in facts: continue facts.add(fact) for dep,strong in fact.deps: todo.append(dep) l = list(facts) del todo del facts l = list(sort_by_successors(l, lambda fact: [dep[0] for dep in fact.deps])) l.reverse() verified = set() results = {} for fact in l: if not all([(not strong) or dep in verified for dep,strong in fact.deps]): results[fact] = None continue result = fact.verlet(self) if result.ok: verified.add(fact) results[fact] = result return results
def execute_cmdLine_instructions(instructions, m, l): """ Applies the instructions given via <instructions> on the manager <m> """ opt_lut = dict() inst_lut = dict() for k, v in instructions.iteritems(): bits = k.split('-', 1) if len(bits) == 1: if not v in m.modules: raise KeyError, "No such module: %s" % v inst_lut[bits[0]] = v else: if not bits[0] in opt_lut: opt_lut[bits[0]] = list() opt_lut[bits[0]].append((bits[1], v)) inst_list = sort_by_successors(inst_lut.keys(), lambda inst: [v for (k,v) in opt_lut.get(inst, ()) if k in m.modules[inst_lut[inst]].deps]) for k in reversed(tuple(inst_list)): if k in m.insts: raise NotImplementedError, \ "Overwriting instancens not yet supported" settings = dict() if k in opt_lut: for k2, v2 in opt_lut[k]: settings[k2] = v2 m.create_instance(k, inst_lut[k], settings) for k in opt_lut: if k in inst_lut: continue for k2, v2 in opt_lut[k]: if not k in m.insts: raise ValueError, "No such instance %s" % k m.change_setting(k, k2, v2)
def execute(self): insts = frozenset(self.insts.keys()) inst_list = tuple(sort_by_successors(insts, lambda inst: [self.insts[inst][2][k] for k in self.man.modules[self.insts[inst][1]].deps if self.insts[inst][2][k] in insts])) for name in reversed(inst_list): self.man.create_instance(*self.insts[name])