Commit 5c53382f authored by Savva Golubitsky's avatar Savva Golubitsky

Func reworked, Selector added

parent d2596858
...@@ -34,7 +34,8 @@ class Edge(object): ...@@ -34,7 +34,8 @@ class Edge(object):
'_morphism', '_morphism',
'_io_mapping', '_io_mapping',
'preprocess', 'preprocess',
'postprocess' 'postprocess',
'order'
] ]
def __init__(self, predicate, morphism, def __init__(self, predicate, morphism,
io_mapping=InOutMapping(), io_mapping=InOutMapping(),
......
...@@ -2,11 +2,41 @@ import collections ...@@ -2,11 +2,41 @@ import collections
import os import os
from enum import Enum, auto from enum import Enum, auto
from functools import partial from functools import partial
import importlib as imp
import comsdk.aux as aux import comsdk.aux as aux
ImplicitParallelizationInfo = collections.namedtuple('ImplicitParallelizationInfo', ['array_keys_mapping', 'branches_number', 'branch_i']) ImplicitParallelizationInfo = collections.namedtuple('ImplicitParallelizationInfo', ['array_keys_mapping', 'branches_number', 'branch_i'])
class Func():
__slots__ = (
'module',
'func',
'name'
)
def __init__(self, module="", name="", dummy=True,func=None):
self.module = module
self.name = name
if func is not None:
self.func = func
elif dummy:
self.func = lambda data: data
else:
self.func = getattr(imp.import_module(module), name)
def __str__(self):
return "{}.{}()".format(self.module, self.name)
class Selector(Func):
__slots__=(
'ntransf'
)
def __init__(self, ntransf, module="", name="", dummy=True):
self.ntransf = ntransf
super().__init__(module, name, func=(lambda x: [True for i in range(ntransf)]) if dummy else None, dummy=False)
class Transfer: class Transfer:
def __init__(self, edge, output_state, index=None): def __init__(self, edge, output_state, index=None):
self.edge = edge self.edge = edge
...@@ -23,39 +53,6 @@ class IdleRunType(Enum): ...@@ -23,39 +53,6 @@ class IdleRunType(Enum):
INIT = auto() INIT = auto()
CLEANUP = auto() CLEANUP = auto()
# class GraphFactory:
# def __init__(self):
# pass
#
# def create_state():
# pass
#
# def create_edge():
# Here we should somehow pass the argument for "special" edges
# Essentially, we change only io_mapping
# pass
#
# def make_graph():
# pass
'''
class PluralGraphFactory:
def __init__(self, plural_keys_mappings, parallel_graphs_number):
self.plural_keys_mappings = plural_keys_mappings
self.parallel_graphs_number = parallel_graphs_number
self.init_state = None
def create_state(state):
if self.init_state == None:
self.init_state = state
def create_edge():
# Here we should somehow pass the argument for "special" edges
# Essentially, we change only io_mapping
pass
def make_graph():
pass
'''
class PluralState: class PluralState:
def __init__(self, states): def __init__(self, states):
self.states = states self.states = states
......
This diff is collapsed.
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
__BEGIN__ --.()-.()--> INPUT_READY
INPUT_READY --predicate_funcs.predicate_x()-case_gen_funcs.function_1()--> TEPMLATE_COPIED
TEPMLATE_COPIED --predicate_funcs.predicate_y()-case_gen_funcs.function_2()--> NAMES_SUBSTITUTED
NAMES_SUBSTITUTED --predicate_funcs.predicate_x()-case_gen_funcs.function_3()--> CONTENT_SUBSTITUTED
CONTENT_SUBSTITUTED --.()-case_gen_funcs.create_dump()--> DUMP_CREATED
CONTENT_SUBSTITUTED --predicate_funcs.predicate_y()-case_gen_funcs.save_to_db()--> RESULT_SAVED
CONTENT_SUBSTITUTED --predicate_funcs.predicate_x()-case_gen_funcs.save_to_file()--> RESULT_SAVED
RESULT_SAVED --predicate_funcs.predicate_y()-case_gen_funcs.repeat()--> INPUT_READY
RESULT_SAVED --predicate_funcs.predicate_x()-case_gen_funcs.exit()--> __END__
RESULT_SAVED --.()-case_gen_funcs.exit()--> __END__
DUMP_CREATED --case_gen_funcs.check_dump()-case_gen_funcs.exit()--> __END__
...@@ -38,5 +38,5 @@ digraph CODEOBJECT_GENERATOR ...@@ -38,5 +38,5 @@ digraph CODEOBJECT_GENERATOR
// В зависимости от результата вычисления функции-SELECTOR осуществляется переход по // В зависимости от результата вычисления функции-SELECTOR осуществляется переход по
//первому или второму ребру //первому или второму ребру
RESULT_SAVED, DUMP_CREATED -> __END__ [morphism=(EDGE_8, EDGE_9),order=(20,30)] RESULT_SAVED, DUMP_CREATED -> __END__ [morphism=(EDGE_8, EDGE_9),order=(20,30)]
RESULT_SAVED -> INPUT_READY,__END__ [selector=SELECTOR, morphism=(EDGE_6, EDGE_7)] RESULT_SAVED -> INPUT_READY,FAKE,__END__ [selector=SELECTOR, morphism=(EDGE_6,EDGE_1,EDGE_7)]
} }
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