def _resolve_dependencies(src_tasks, herring_tasks): """ Resolve the dependencies for the given list of task names. :param src_tasks: list of task names that may have dependencies :type src_tasks: list :param herring_tasks: list of tasks from the herringfile :type herring_tasks: dict :return: list of resolved (including dependencies) task names :rtype: list """ tasks = HerringApp._find_dependencies(src_tasks, herring_tasks) task_list = [] depend_dict = HerringApp._tasks_to_depend_dict(tasks, herring_tasks) for task_group in toposort2(depend_dict): task_list.extend(list(task_group)) return task_list
def _resolve_dependencies(self, src_tasks, herring_tasks): """ Resolve the dependencies for the given list of task names. :param src_tasks: list of task names that may have dependencies :type src_tasks: list :param herring_tasks: list of tasks from the herringfile :type herring_tasks: dict :return: list of resolved (including dependencies) task names :rtype: list(list(str)) """ herring_tasks = self._resolve_dependent_ofs(herring_tasks) tasks = self._find_dependencies(src_tasks, herring_tasks) task_lists = [] depend_dict = self._tasks_to_depend_dict(tasks, herring_tasks) for task_group in toposort2(depend_dict): task_lists.append(list(task_group)) return task_lists
def test_toposort2(self): """ Test functionality :return: None """ data = { 2: set([11]), 9: set([11, 8]), 10: set([11, 3]), 11: set([7, 5]), 8: set([7, 3]) } expected_results = [ [3, 5, 7], [8, 11], [2, 9, 10] ] for level in (sorted(x) for x in toposort2(data)): expected = expected_results.pop(0) assert level == expected, "level => %s, expected => %s" % (level, expected)