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())