Example #1
0
File: base.py Project: LBdN/labs
def gen_to_tree(g):
    n = tree.Node(cargo=g)
    #==
    if   g.__name__ == 'broadcast' : children = g.gi_frame.f_locals['targets']
    elif g.__name__ == 'sink'      : children = []
    else                           : children = [g.gi_frame.f_locals['target']]
    #==
    for child in children:
        tree.connect(gen_to_tree(child), n)
    return n
Example #2
0
def setup_graph(nb, nb_cnx):
    elements = map(gen_el, range(nb))
    root     = elements[0]
    for idx, el in enumerate(elements):
        rst = elements[:idx]
        if not rst:
            continue
        ii  = min(nb_cnx, len(rst))
        els = random.sample(rst, ii)
        for e in els:
            if el in e.children:
                continue
            tree.connect(el, e)
    #==
    for el in elements:
        if el != root:
            assert el.parents 
    assert root.children
    #==
    return root, elements
Example #3
0
File: test.py Project: LBdN/labs
def func_to_node(f):
    sink =  f.__dict__.get('sink')
    if sink: gen = base.sink
    else   : gen = base.transformer
    gp = base.GeneratorProto(gen, f)
    tn = graph.TNode(cargo=gp)
    #==
    if not sink:
        os = graph.OSlot()
        tree.connect(os, tn)
    else:
        os = None
    #==
    if f.__code__.co_varnames: nb_arg = 1
    else                     : nb_arg = f.__code__.co_argcount
    islots = []
    for i in range(nb_arg):
        islot = graph.ISlot()
        islots.append(islot)
        tree.connect(tn, islot)
    #==
    return islots, tn, os
Example #4
0
File: test.py Project: LBdN/labs
def test():
    gp = base.GeneratorProto(base.value, 5)
    tn = graph.TNode(cargo=gp)
    os = graph.OSlot()
    tree.connect(os, tn)
    #==
    oss = [os]
    for i in range(100):
        op         = random.choice([add, minus, inc, decr])
        iss, _, os = func_to_node(op)
        for i in iss:
            tree.connect(i, random.choice(oss))
        oss.append(os)
    #==
    op         = pprint
    iss, _, os = func_to_node(op)
    while oss:
        tree.connect(random.choice(iss), oss.pop())
    assert not oss
    return tn