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