json udc working but not spec
This commit is contained in:
parent
d56d60d7a3
commit
a57e9d5ea3
|
|
@ -5,7 +5,7 @@ from copy import deepcopy
|
||||||
from fn.op import foldr, call
|
from fn.op import foldr, call
|
||||||
|
|
||||||
from cadCAD.engine.utils import engine_exception
|
from cadCAD.engine.utils import engine_exception
|
||||||
from cadCAD.utils import flatten, UDC_Wrapper
|
from cadCAD.utils import flatten, UDC_Wrapper, objectview
|
||||||
|
|
||||||
id_exception: Callable = engine_exception(KeyError, KeyError, None)
|
id_exception: Callable = engine_exception(KeyError, KeyError, None)
|
||||||
|
|
||||||
|
|
@ -70,7 +70,6 @@ class Executor:
|
||||||
|
|
||||||
last_in_obj: Dict[str, Any] = deepcopy(sL[-1])
|
last_in_obj: Dict[str, Any] = deepcopy(sL[-1])
|
||||||
udc = var_dict[0]['udc']
|
udc = var_dict[0]['udc']
|
||||||
# last_in_obj: Dict[str, Any] = sL[-1]
|
|
||||||
|
|
||||||
_input: Dict[str, Any] = self.policy_update_exception(self.get_policy_input(var_dict, sub_step, sL, last_in_obj, policy_funcs))
|
_input: Dict[str, Any] = self.policy_update_exception(self.get_policy_input(var_dict, sub_step, sL, last_in_obj, policy_funcs))
|
||||||
|
|
||||||
|
|
@ -82,20 +81,10 @@ class Executor:
|
||||||
if isinstance(v, dict) and hasattr(v, 'class_id'):
|
if isinstance(v, dict) and hasattr(v, 'class_id'):
|
||||||
del last_in_obj[k]
|
del last_in_obj[k]
|
||||||
|
|
||||||
# def HydraObj(_g, step, sL, s, _input):
|
|
||||||
# y = 'hydra_obj'
|
|
||||||
# # x = s['hydra_obj']
|
|
||||||
# x = namedtuple("Hydra", s['hydra_members'].keys())(*s['hydra_members'].values())
|
|
||||||
# return (y, x)
|
|
||||||
|
|
||||||
new_last_in_obj = dict(list(last_in_obj.items()) + list(alt_udc_dict.items()))
|
new_last_in_obj = dict(list(last_in_obj.items()) + list(alt_udc_dict.items()))
|
||||||
# for f in state_funcs + [HydraObj]:
|
|
||||||
for f in state_funcs:
|
for f in state_funcs:
|
||||||
# ToDo: Create Named Tuple Here
|
# ToDo: Create Named Tuple Here
|
||||||
y, x = f(var_dict, sub_step, sL, new_last_in_obj, _input)
|
yield self.state_update_exception(f(var_dict, sub_step, sL, new_last_in_obj, _input))
|
||||||
# if isinstance(x, dict) and x['hydra_type'] == Dict and 'class_id' in x.keys():
|
|
||||||
# x = namedtuple("Hydra", x.keys())(*x.values())
|
|
||||||
yield self.state_update_exception((y, x))
|
|
||||||
|
|
||||||
|
|
||||||
udc_dict = {
|
udc_dict = {
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ from collections import defaultdict
|
||||||
from itertools import product
|
from itertools import product
|
||||||
import warnings
|
import warnings
|
||||||
from inspect import getmembers, ismethod
|
from inspect import getmembers, ismethod
|
||||||
from copy import deepcopy
|
from copy import deepcopy, copy
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -15,18 +15,11 @@ class objectview(object):
|
||||||
class UDC_Wrapper(object):
|
class UDC_Wrapper(object):
|
||||||
def __init__(self, current, past, current_functions, past_functions=[]):
|
def __init__(self, current, past, current_functions, past_functions=[]):
|
||||||
current_funcs = dict(getmembers(current, ismethod))
|
current_funcs = dict(getmembers(current, ismethod))
|
||||||
# current_funcs['object'] = current
|
|
||||||
filtered_current_funcs = {k: v for k, v in current_funcs.items() if k in current_functions}
|
filtered_current_funcs = {k: v for k, v in current_funcs.items() if k in current_functions}
|
||||||
# current_members = filtered_current_funcs.update(vars(current))
|
|
||||||
|
|
||||||
# past_funcs = dict(getmembers(past, ismethod))
|
|
||||||
# past_funcs['object'] = past
|
|
||||||
# filtered_past_funcs = {k: v for k, v in past_funcs.items() if k in past_functions}
|
|
||||||
# past_members = filtered_past_funcs.update(vars(past))
|
|
||||||
|
|
||||||
filtered_current_funcs['hydra_type'] = Dict
|
|
||||||
filtered_current_funcs.update(vars(past))
|
filtered_current_funcs.update(vars(past))
|
||||||
# print(filtered_current_funcs)
|
filtered_current_funcs['hydra_type'] = Dict
|
||||||
filtered_current_funcs['current'] = current
|
filtered_current_funcs['current'] = current
|
||||||
filtered_current_funcs['past'] = past
|
filtered_current_funcs['past'] = past
|
||||||
|
|
||||||
|
|
@ -38,9 +31,6 @@ class UDC_Wrapper(object):
|
||||||
def get_namedtuple(self):
|
def get_namedtuple(self):
|
||||||
return namedtuple("Hydra", self.hybrid_members.keys())(*self.hybrid_members.values())
|
return namedtuple("Hydra", self.hybrid_members.keys())(*self.hybrid_members.values())
|
||||||
|
|
||||||
# def hybrid_members_values(self):
|
|
||||||
# return [v for k, v in self.hybrid_members.keys()]
|
|
||||||
|
|
||||||
|
|
||||||
def pipe(x):
|
def pipe(x):
|
||||||
return x
|
return x
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ class MyClassA(object):
|
||||||
# ToDo: id sensitive to lineage, rerepresent
|
# ToDo: id sensitive to lineage, rerepresent
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
# return str(self.x)
|
# return str(self.x)
|
||||||
return f"{hex(id(self))} - {self.x}"
|
return f"{self.__class__.__name__} - {hex(id(self))} - {self.__dict__}"
|
||||||
|
|
||||||
|
|
||||||
class MyClassB:
|
class MyClassB:
|
||||||
|
|
@ -75,10 +75,11 @@ g: Dict[str, List[MyClassA]] = {'udc': [MyClassA]}
|
||||||
# genesis state
|
# genesis state
|
||||||
udc = MyClassA(0)
|
udc = MyClassA(0)
|
||||||
# namedtuple("Hydra", self.hybrid_members.keys())(*self.hybrid_members.values())
|
# namedtuple("Hydra", self.hybrid_members.keys())(*self.hybrid_members.values())
|
||||||
udc_json = {'current': udc, 'past': udc}
|
# udc_json = {'current': udc, 'past': udc}
|
||||||
hydra = UDC_Wrapper(udc, udc, current_functions=['update'])
|
hydra = UDC_Wrapper(udc, udc, current_functions=['update'])
|
||||||
hydra_members = hydra.get_hybrid_members()
|
hydra_members = hydra.get_hybrid_members()
|
||||||
hydra_obj = namedtuple("Hydra", hydra_members.keys())(*hydra_members.values())
|
# hydra_obj = namedtuple("Hydra", hydra_members.keys())(*hydra_members.values())
|
||||||
|
hydra_view = objectview(hydra_members)
|
||||||
|
|
||||||
|
|
||||||
state_dict = {
|
state_dict = {
|
||||||
|
|
@ -86,11 +87,11 @@ state_dict = {
|
||||||
'b': 0,
|
'b': 0,
|
||||||
'i': 0,
|
'i': 0,
|
||||||
'j': 0,
|
'j': 0,
|
||||||
'k': 0,
|
# 'k': 0,
|
||||||
# "hydra": hydra,
|
# "hydra": hydra,
|
||||||
"hydra_members": hydra_members,
|
"hydra_members": hydra_members,
|
||||||
"hydra_obj": hydra_obj,
|
# "hydra_obj": hydra_obj,
|
||||||
'hydra_view': objectview(hydra_members),
|
# 'hydra_view': hydra_view,
|
||||||
'timestamp': '2019-01-01 00:00:00'
|
'timestamp': '2019-01-01 00:00:00'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -128,7 +129,8 @@ def HydraObj(_g, step, sL, s, _input):
|
||||||
# new_hydra = dict(generate_var_deepcopy(hydra_nt))
|
# new_hydra = dict(generate_var_deepcopy(hydra_nt))
|
||||||
|
|
||||||
# new_hydra_members = dict(generate_var_deepcopy(hydra_members))
|
# new_hydra_members = dict(generate_var_deepcopy(hydra_members))
|
||||||
x = namedtuple("Hydra", s['hydra_members'].keys())(*s['hydra_members'].values())
|
hm = copy(s['hydra_members'])
|
||||||
|
x = namedtuple("Hydra", hm.keys())(*hm.values())
|
||||||
# x = namedtuple("Hydra", new_hydra.keys())(*new_hydra.values())
|
# x = namedtuple("Hydra", new_hydra.keys())(*new_hydra.values())
|
||||||
|
|
||||||
# print(x.x)
|
# print(x.x)
|
||||||
|
|
@ -136,7 +138,8 @@ def HydraObj(_g, step, sL, s, _input):
|
||||||
|
|
||||||
def HydraView(_g, step, sL, s, _input):
|
def HydraView(_g, step, sL, s, _input):
|
||||||
y = 'hydra_view'
|
y = 'hydra_view'
|
||||||
x = objectview(s['hydra_members'])
|
# x = objectview(s['hydra_members'])
|
||||||
|
x = s['hydra_view'].update()
|
||||||
return (y, x)
|
return (y, x)
|
||||||
|
|
||||||
def A(_g, step, sL, s, _input):
|
def A(_g, step, sL, s, _input):
|
||||||
|
|
@ -147,17 +150,17 @@ def A(_g, step, sL, s, _input):
|
||||||
def B(_g, step, sL, s, _input):
|
def B(_g, step, sL, s, _input):
|
||||||
y = 'b'
|
y = 'b'
|
||||||
x = s['hydra_members']['x']
|
x = s['hydra_members']['x']
|
||||||
# x = s['hydra_members'].x
|
# x = s['hydra_view'].x
|
||||||
# x = s['hydra_obj'].x
|
# x = s['hydra_obj'].x
|
||||||
return (y, x)
|
return (y, x)
|
||||||
|
|
||||||
def I(_g, step, sL, s, _input):
|
def I(_g, step, sL, s, _input):
|
||||||
y = 'i'
|
y = 'i'
|
||||||
# x = s['hydra_members']['update']()
|
x = s['hydra_members']['update']()
|
||||||
|
|
||||||
# Either works
|
# Either works
|
||||||
# x = s['hydra_members'].update()
|
# x = s['hydra_obj'].update()
|
||||||
x = s['hydra_obj'].update()
|
# x = s['hydra_view'].x
|
||||||
return (y, x)
|
return (y, x)
|
||||||
|
|
||||||
def J(_g, step, sL, s, _input):
|
def J(_g, step, sL, s, _input):
|
||||||
|
|
@ -165,13 +168,14 @@ def J(_g, step, sL, s, _input):
|
||||||
x = s['hydra_members']['x']
|
x = s['hydra_members']['x']
|
||||||
# x = s['hydra_members'].x
|
# x = s['hydra_members'].x
|
||||||
# x = s['hydra_obj'].x
|
# x = s['hydra_obj'].x
|
||||||
|
# x = s['hydra_view'].x
|
||||||
return (y, x)
|
return (y, x)
|
||||||
|
|
||||||
|
|
||||||
def K(_g, step, sL, s, _input):
|
def K(_g, step, sL, s, _input):
|
||||||
y = 'k'
|
y = 'k'
|
||||||
# x = s['hydra_view'].x
|
|
||||||
x = s['hydra_obj'].x
|
x = s['hydra_obj'].x
|
||||||
|
# x = s['hydra_view'].x
|
||||||
return (y, x)
|
return (y, x)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -185,11 +189,11 @@ partial_state_update_blocks = {
|
||||||
'b': B,
|
'b': B,
|
||||||
# 'hydra': Hydra,
|
# 'hydra': Hydra,
|
||||||
'hydra_members': HydraMembers,
|
'hydra_members': HydraMembers,
|
||||||
'hydra_obj': HydraObj,
|
# 'hydra_obj': HydraObj,
|
||||||
'hydra_view': HydraView,
|
# 'hydra_view': HydraView,
|
||||||
'i': I,
|
'i': I,
|
||||||
'j': J,
|
'j': J,
|
||||||
'k': K,
|
# 'k': K,
|
||||||
'timestamp': time_model,
|
'timestamp': time_model,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -202,11 +206,11 @@ partial_state_update_blocks = {
|
||||||
'b': B,
|
'b': B,
|
||||||
# 'hydra': Hydra,
|
# 'hydra': Hydra,
|
||||||
'hydra_members': HydraMembers,
|
'hydra_members': HydraMembers,
|
||||||
'hydra_obj': HydraObj,
|
# 'hydra_obj': HydraObj,
|
||||||
'hydra_view': HydraView,
|
# 'hydra_view': HydraView,
|
||||||
'i': I,
|
'i': I,
|
||||||
'j': J,
|
'j': J,
|
||||||
'k': K,
|
# 'k': K,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'PSUB3': {
|
'PSUB3': {
|
||||||
|
|
@ -217,11 +221,11 @@ partial_state_update_blocks = {
|
||||||
'b': B,
|
'b': B,
|
||||||
# 'hydra': Hydra,
|
# 'hydra': Hydra,
|
||||||
'hydra_members': HydraMembers,
|
'hydra_members': HydraMembers,
|
||||||
'hydra_obj': HydraObj,
|
# 'hydra_obj': HydraObj,
|
||||||
'hydra_view': HydraView,
|
# 'hydra_view': HydraView,
|
||||||
'i': I,
|
'i': I,
|
||||||
'j': J,
|
'j': J,
|
||||||
'k': K,
|
# 'k': K,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue