def resolve_delayed_evaluator()

in metaflow/user_configs/config_parameters.py [0:0]


def resolve_delayed_evaluator(v: Any, ignore_errors: bool = False) -> Any:
    # NOTE: We don't ignore errors in downstream calls because we want to have either
    # all or nothing for the top-level call by the user.
    try:
        if isinstance(v, DelayEvaluator):
            return v()
        if isinstance(v, dict):
            return {
                resolve_delayed_evaluator(k): resolve_delayed_evaluator(v)
                for k, v in v.items()
            }
        if isinstance(v, list):
            return [resolve_delayed_evaluator(x) for x in v]
        if isinstance(v, tuple):
            return tuple(resolve_delayed_evaluator(x) for x in v)
        if isinstance(v, set):
            return {resolve_delayed_evaluator(x) for x in v}
        return v
    except Exception as e:
        if ignore_errors:
            # Assumption is that default value of None is always allowed.
            # This code path is *only* used when evaluating Parameters AND they
            # use configs in their attributes AND the runner/deployer is being used
            # AND CLICK_API_PROCESS_CONFIG is False. In those cases, all attributes in
            # Parameter can be set to None except for required and show_default
            # and even in those cases, a wrong value will have very limited consequence.
            return None
        raise e