Beispiel #1
0
    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
Beispiel #2
0
    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
Beispiel #3
0
    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)