Code Duplication    Length = 24-26 lines in 2 locations

ActionTree/__init__.py 2 locations

@@ 463-488 (lines=26) @@
460
    def dependencies(self):
461
        """
462
        Return the list of this action's dependencies.
463
        """
464
        return list(self.__dependencies)
465
466
    def get_all_dependencies(self):
467
        """
468
        Return the set of this action's recursive dependencies, including itself.
469
        """
470
        dependencies = set([self])
471
        for dependency in self.__dependencies:
472
            dependencies |= dependency.get_all_dependencies()
473
        return dependencies
474
475
    def get_preview(self):
476
        """
477
        Return the labels of this action and its dependencies, in an order that could be the execution order.
478
        """
479
        return [action.__label for action in self.get_possible_execution_order()]
480
481
    def get_possible_execution_order(self, seen_actions=None):
482
        if seen_actions is None:
483
            seen_actions = set()
484
        actions = []
485
        if self not in seen_actions:
486
            seen_actions.add(self)
487
            for dependency in self.__dependencies:
488
                actions += dependency.get_possible_execution_order(seen_actions)
489
            actions.append(self)
490
        return actions
491
@@ 490-513 (lines=24) @@
487
            for dependency in self.__dependencies:
488
                actions += dependency.get_possible_execution_order(seen_actions)
489
            actions.append(self)
490
        return actions
491
492
493
class CompoundException(Exception):
494
    """
495
    Exception thrown by :func:`.execute` when a dependencies raise exceptions.
496
    """
497
498
    def __init__(self, exceptions, execution_report):
499
        super(CompoundException, self).__init__(exceptions)
500
        self.__exceptions = exceptions
501
        self.__execution_report = execution_report
502
503
    @property
504
    def exceptions(self):
505
        """
506
        The list of the encapsulated exceptions.
507
        """
508
        return self.__exceptions
509
510
    @property
511
    def execution_report(self):
512
        """
513
        The :class:`.ExecutionReport` of the failed execution.
514
        """
515
        return self.__execution_report
516