Example #1
0
def create_odict_from_items(name, key, dictlst):
    """Construct an ordered dictionary from a list of dictionaries."""
    def _generator():
        for delement in dictlst:        
            dvalues = dict((k, v) for (k, v) in delement.iteritems())
            yield (delement[key], lib.Struct(name, **dvalues))
    return odict(_generator())      
Example #2
0
def parse_active_nets(lines, units):
    """Return an orderd dict with nets, each containing a list of links.""" 
    nets_lines = list(lib.split_iter_of_consecutive(lines[1:], lambda s: not s.strip(), 2))
    nets = odict()
    for net_lines in lib.strip_iter_items(nets_lines):
        info = lib.strip_list(net_lines)
        name = info[0].strip()
        block = list(lib.iter_block(lib.strip_list(info[1:]), 
          r"Net members:", r"\s.*Quality ="))
        table, quality_line = block[:-2], block[-1]
        max_quality = int(re.search("Quality = (\d+)", quality_line).group(1))
        grid_field = re.match("Net members:\s*(.*?)\s*Role:", table[0]).group(1)
        grid_fields = ["Net members:", grid_field, "Role:", "System:", "Antenna:"]    
        rows = list(lib.parse_table(table, grid_fields, lambda s: not s.startswith('#')))
        net_members = create_odict_from_items("net_member", "net_members", rows)        
        links = []
        for link in get_net_links(rows, grid_field, units):
            peers = (link["node1"].net_members, link["node2"].net_members)
            link = lib.Struct("Link", 
                peers=peers, 
                quality=link["quality"], 
                distance=link["distance"])
            links.append(link)
        nets[name] = lib.Struct("Network", name=name, 
            net_members=net_members,
            links=links, 
            max_quality=max_quality)
    return nets                
Example #3
0
def create_odict_from_items(name, key, dictlst):
    """Construct an ordered dictionary from a list of dictionaries."""
    def _generator():
        for delement in dictlst:
            dvalues = dict((k, v) for (k, v) in delement.iteritems())
            yield (delement[key], lib.Struct(name, **dvalues))

    return odict(_generator())
Example #4
0
def parse_active_nets(lines, units):
    """Return an orderd dict with nets, each containing a list of links."""
    nets_lines = list(
        lib.split_iter_of_consecutive(lines[1:], lambda s: not s.strip(), 2))
    nets = odict()
    for net_lines in lib.strip_iter_items(nets_lines):
        info = lib.strip_list(net_lines)
        name = info[0].strip()
        block = list(
            lib.iter_block(lib.strip_list(info[1:]), r"Net members:",
                           r"\s.*Quality ="))
        table, quality_line = block[:-2], block[-1]
        max_quality = int(re.search("Quality = (\d+)", quality_line).group(1))
        grid_field = re.match("Net members:\s*(.*?)\s*Role:",
                              table[0]).group(1)
        grid_fields = [
            "Net members:", grid_field, "Role:", "System:", "Antenna:"
        ]
        rows = list(
            lib.parse_table(table, grid_fields,
                            lambda s: not s.startswith('#')))
        net_members = create_odict_from_items("net_member", "net_members",
                                              rows)
        links = []
        for link in get_net_links(rows, grid_field, units):
            peers = (link["node1"].net_members, link["node2"].net_members)
            link = lib.Struct("Link",
                              peers=peers,
                              quality=link["quality"],
                              distance=link["distance"])
            links.append(link)
        nets[name] = lib.Struct("Network",
                                name=name,
                                net_members=net_members,
                                links=links,
                                max_quality=max_quality)
    return nets
Example #5
0
 def setUp(self):
     self.odict = odict.odict([("key1", "value1"), ("key2", "value2")])