Exemplo n.º 1
0
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)
Exemplo n.º 2
0
	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
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
 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])