Commit 194bdc23 authored by Savva Golubitsky's avatar Savva Golubitsky

edges now sorts, but smtms doubled 👥

parent 70c91ee9
......@@ -39,6 +39,7 @@ class Edge(object):
]
def __init__(self, predicate, morphism,
io_mapping=InOutMapping(),
order=0
):
self.pred_module = predicate.module
self.pred_name = predicate.name
......@@ -49,13 +50,14 @@ class Edge(object):
self._io_mapping = io_mapping
self.preprocess = lambda pd: None
self.postprocess = lambda pd: None
self.order = int(order)
def predicate(self, data, dynamic_keys_mapping={}):
proxy_data = self._io_mapping.build_proxy_data(data, dynamic_keys_mapping)
return self._predicate(proxy_data)
def morph(self, data, dynamic_keys_mapping={}):
#print(dynamic_keys_mapping)
# print(self.pred_name, self.morph_name, self.order)
proxy_data = self._io_mapping.build_proxy_data(data, dynamic_keys_mapping)
#print(proxy_data)
self.preprocess(data)
......
......@@ -143,6 +143,13 @@ class State:
self._proxy_state=None
def idle_run(self, idle_run_type, branching_states_history):
def __sort_by_order(tr):
print(tr.edge.order)
return tr.edge.order
self.transfers.sort(key = __sort_by_order)
print(self.name)
for t in self.transfers:
print("\t", t.edge.morph_name)
if self._proxy_state is not None:
return self._proxy_state.idle_run(idle_run_type, branching_states_history)
if idle_run_type == IdleRunType.INIT:
......
......@@ -56,8 +56,9 @@ class GraphFactory():
def _create_morphism(self, morphname=None):
if morphname is None:
return Func(), Func()
pred_f, func_f = Func(), Func()
pred_f, func_f = Func(), Func()
morph = entities[morphname]
# print(morph)
for m in morph.__slots__:
if getattr(morph,m) != None:
if m!="predicate" and m!="function":
......@@ -84,9 +85,9 @@ class GraphFactory():
return pred_f, func_f
def add_connection(self, st1, st2, morphism=None):
def add_connection(self, st1, st2, morphism=None, ordr=0):
pred, entr = self._create_morphism(morphism)
self.states[st1].connect_to(self.states[st2], edge=Edge(pred, entr))
self.states[st1].connect_to(self.states[st2], edge=Edge(pred, entr, order=ordr))
# print("{} --{}-{}--> {}".format(st1, pred, entr, st2))
def build(self):
......@@ -139,11 +140,12 @@ class Parser():
l=len(vals[sl])
elif l!=len(vals[sl]):
print("\tERROR: Number of multiple params do not match", l)
return -1
exit(-1)
res = [copy.copy(param) for i in range(l)]
for sl in vals:
for i, _ in enumerate(res):
setattr(res[i], sl, vals[sl][i])
print("SPLIT:",res[0])
return res
#Props is line "[proFp=smth, ...]"
......@@ -164,7 +166,6 @@ class Parser():
else:
print("\tERROR:Unknown parameter: "+ r[0])
exit(-1)
print(parm)
return parm
def _param_from_entln(self, raw):
......@@ -195,14 +196,13 @@ class Parser():
p = self._param_from_props(spl[3])
self.fact.add_state(left[0],selectorname=p.selector)
morphs = self._split_multiple(p)
for m in morphs:
print(m)
print("MORPH", morphs[0])
if len(morphs)!=len(right):
print("\tERROR:Count of edges do not match to count of states in one to many connection!\n\t\t{}".format(raw))
exit()
for i, st in enumerate(right):
self.fact.add_state(st)
self.fact.add_connection(left[0], st, morphs[i].morphism)
self.fact.add_connection(left[0], st, morphs[i].morphism, morphs[i].order)
# one to one connection
else:
self.fact.add_state(left[0])
......
import comsdk.parser as prs
from comsdk.graph import Selector, Func
p=5
res = lambda : [True for i in range(p)]
print(res())
# ff = Func(func=lambda x: [True for i in range(p)])
data = {}
sel1 = Selector(3)
sel2 = Selector(3, "selectors", "sel1")
sel3 = Selector(3, "selector", "sel2")
print(sel1)
print(sel2)
print(sel3)
\ No newline at end of file
......@@ -38,5 +38,5 @@ digraph CODEOBJECT_GENERATOR
// В зависимости от результата вычисления функции-SELECTOR осуществляется переход по
//первому или второму ребру
RESULT_SAVED, DUMP_CREATED -> __END__ [morphism=(EDGE_8, EDGE_9)]
RESULT_SAVED -> INPUT_READY,FAKE,__END__ [selector=SELECTOR, morphism=(EDGE_6,EDGE_1,EDGE_7), order=(10,20,30)]
RESULT_SAVED -> INPUT_READY,FAKE,__END__ [selector=SELECTOR, morphism=(EDGE_6,EDGE_1,EDGE_7), order=(30,20,10)]
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment