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