コード例 #1
0
    def set_condition( self, expr ):
        # 'foo | bar & baz'
        # 'foo:fail | foo'
        # 'foo[T-6]:out1 | baz'

        drop_these = []
        for k in self.messages:
            if self.start_point:
                task = re.search( r'(.*).(.*) ', self.messages[k])
                if task.group:
                    try:
                        foo = task.group().split(".")[1].rstrip()
                        if ( get_point( foo ) <  self.start_point and
                                 foo != '1' ):
                            # TODO - ASYNC TASKS '1' ONLY NEEDS UPDATING FOR
                            # INTEGER CYCLING (AND MORE?)
                            drop_these.append(k)
                    except IndexError:
                        pass

        if self.pre_initial_messages:
            for k in self.pre_initial_messages:
                drop_these.append(k)

        if drop_these:
            simpler = conditional_simplifier(expr, drop_these)
            expr = simpler.get_cleaned()

        # make into a python expression
        self.raw_conditional_expression = expr
        for label in self.messages:
            # match label start and end on on word boundary
            expr = re.sub( r'\b' + label + r'\b', 'self.satisfied[\'' + label + '\']', expr )

        for label in self.excess_labels:
            # treat duplicate triggers as always satisfied
            expr = re.sub( r'\b' + label + r'\b', 'True', expr )
            self.raw_conditional_expression = re.sub( r'\b' + label + r'\b', 'True', self.raw_conditional_expression )

        for label in drop_these:
            if self.messages.get(label):
                msg = self.messages[label]
                self.messages.pop(label)
                self.satisfied.pop(label)
                self.labels.pop(msg)

        self.conditional_expression = expr
コード例 #2
0
ファイル: conditionals.py プロジェクト: raghu330/cylc
    def set_condition( self, expr ):
        # 'foo | bar & baz'
        # 'foo:fail | foo'
        # 'foo[T-6]:out1 | baz'

        drop_these = []
        for k in self.messages:
            if self.ict:
                task = re.search( r'(.*).(.*) ', self.messages[k])
                if task.group:
                    try:
                        if (int(task.group().split(".")[1]) < int(self.ict) and
                            int(task.group().split(".")[1]) != 1):
                            drop_these.append(k)
                    except IndexError:
                        pass

        if self.pre_initial_messages:
            for k in self.pre_initial_messages:
                drop_these.append(k)

        if drop_these:
            simpler = conditional_simplifier(expr, drop_these)
            expr = simpler.get_cleaned()

        # make into a python expression
        self.raw_conditional_expression = expr
        for label in self.messages:
            # match label start and end on on word boundary
            expr = re.sub( r'\b' + label + r'\b', 'self.satisfied[\'' + label + '\']', expr )

        for label in self.excess_labels:
            # treat duplicate triggers as always satisfied
            expr = re.sub( r'\b' + label + r'\b', 'True', expr )
            self.raw_conditional_expression = re.sub( r'\b' + label + r'\b', 'True', self.raw_conditional_expression )

        for label in drop_these:
            if self.messages.get(label):
                msg = self.messages[label]
                self.messages.pop(label)
                self.satisfied.pop(label)
                self.labels.pop(msg)

        self.conditional_expression = expr