andi icon indicating copy to clipboard operation
andi copied to clipboard

Can build functions be simplified?

Open kmike opened this issue 5 months ago • 0 comments

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.

kmike avatar Jan 11 '24 17:01 kmike