def gradify_closure(func, argmaps, func_kwargs={}): | |
func_kwargs = dict(func_kwargs) | |
def gradify_func(*args): | |
kwargs = {} | |
for (arg, argmap) in zip(args, argmaps): | |
postprocessing = argmap.get("postprocessing", None) | |
if postprocessing: | |
arg = eval(postprocessing)(arg) | |
kw_label = argmap["label"] | |
kwargs[kw_label] = arg | |
return func(**kwargs, **func_kwargs) | |
return gradify_func | |
def compile_callable(source, target_name=None): | |
ldict = {} | |
exec(source, globals(), ldict) | |
if target_name: | |
return ldict[target_name] | |
else: | |
for v in ldict.values(): | |
if callable(v): | |
return v |