def topological_sort_feature_dependencies()

in ludwig/utils/algorithms_utils.py [0:0]


def topological_sort_feature_dependencies(features):
    # topological sorting of output features for resolving dependencies
    dependencies_graph = {}
    output_features_dict = {}
    for feature in features:
        dependencies = []
        if 'dependencies' in feature:
            dependencies.extend(feature['dependencies'])
        if TIED in feature:
            dependencies.append(feature[TIED])
        dependencies_graph[feature['name']] = dependencies
        output_features_dict[feature['name']] = feature
    return [output_features_dict[node[0]]
            for node in topological_sort(dependencies_graph)]