andi
andi copied to clipboard
Can build functions be simplified?
Currently andi docs suggest this as a build function:
def build(plan):
instances = {}
for fn_or_cls, kwargs_spec in plan:
if isinstance(fn_or_cls, CustomBuilder):
instances[fn_or_cls.result_class_or_fn] = fn_or_cls.factory(**kwargs_spec.kwargs(instances))
else:
instances[fn_or_cls] = fn_or_cls(**kwargs_spec.kwargs(instances))
return instances
It seems it's possible to make it
def build(plan):
instances = {}
for builder, kwargs_spec in plan:
instances[builder.result_class_or_fn] = builder.factory(**kwargs_spec.kwargs(instances))
return instances
if we wrap everything to builders in the plan.