def __render()

in liminal/runners/airflow/operators/operator_with_variable_resolving.py [0:0]


    def __render(self, val: str, dag_run_conf: dict, unresolved_tags: set):
        token = re.match(_VAR_REGEX, val)
        if token and token[2].strip() not in unresolved_tags:
            tag_name = token[2].strip()
            prefix = self.__render(token[1], dag_run_conf, unresolved_tags)
            suffix = self.__render(token[3], dag_run_conf, unresolved_tags)
            if dag_run_conf and tag_name in dag_run_conf:
                return self.__render(prefix + str(dag_run_conf[tag_name]) + suffix, dag_run_conf, unresolved_tags)
            elif tag_name in self.variables:
                return self.__render(prefix + str(self.variables[tag_name]) + suffix, dag_run_conf, unresolved_tags)
            else:
                backend_value = standalone_variable_backend.get_variable(tag_name, None)
                if backend_value:
                    return self.__render(prefix + backend_value + suffix, dag_run_conf, unresolved_tags)
                else:
                    unresolved_tags.add(tag_name)
                    return self.__render(prefix + '{{' + token[2] + '}}' + suffix, dag_run_conf, unresolved_tags)
        else:
            return val