def resolve_depencies()

in dusty/tools/dependency.py [0:0]


def resolve_depencies(modules_ordered_dict):
    """ Resolve depencies """
    # Prepare module name map
    module_name_map = dict()
    for item in modules_ordered_dict:
        try:
            module_name_map[modules_ordered_dict[item].__class__.__module__.split(".")[-2]] = \
                modules_ordered_dict[item]
        except IndexError:
            module_name_map[modules_ordered_dict[item].__module__.split(".")[-2]] = \
                modules_ordered_dict[item]
    # Check required depencies
    for module_name in module_name_map:
        for dependency in module_name_map[module_name].depends_on():
            if dependency not in module_name_map:
                log.error("Dependency %s not present (required by %s)", dependency, module_name)
                raise RuntimeError("Required dependency not present")
    # Walk modules
    module_order = list()
    visited_modules = set()
    for module_name in module_name_map:
        if module_name not in module_order:
            _walk_module_depencies(module_name, module_name_map, module_order, visited_modules)
    # Re-order modules
    for module_name in module_order:
        modules_ordered_dict.move_to_end(module_name_map[module_name].get_name())