def apply_variable_substitution()

in liminal/core/config/defaults/default_configs.py [0:0]


def apply_variable_substitution(subliminal, superliminal, is_render_variables=False):
    """
    if is_render_variables is True
       Replace all {{variable.key}} in subliminal with variable.value variable in
       subliminal.variables + superliminal.variables
    else
       merge subliminal.variables with superliminal.variables without replace
       placeholders
    """
    keyword = "variables"
    merged_variables = dict_util.merge_dicts(subliminal.get(keyword, {}), superliminal.get(keyword, {}), True)
    if is_render_variables:
        for k, v in merged_variables.items():
            if isinstance(v, str) or (not isinstance(v, dict) and not isinstance(v, list)):
                merged_variables[k] = dict_util.replace_placholders_in_string(str(v), merged_variables)

        merged_variables = dict_util.replace_placeholders(merged_variables, merged_variables)
        return dict_util.replace_placeholders(subliminal, merged_variables)
    else:
        subliminal[keyword] = merged_variables
        return subliminal