1from Orange.data import Variable 2from Orange.widgets import settings 3 4 5class EvaluationResultsContextHandler(settings.ContextHandler): 6 """Context handler for evaluation results""" 7 8 def open_context(self, widget, classes, classifier_names): 9 if isinstance(classes, Variable): 10 if classes.is_discrete: 11 classes = classes.values 12 else: 13 classes = None 14 super().open_context(widget, classes, classifier_names) 15 16 def new_context(self, classes, classifier_names): 17 context = super().new_context() 18 context.classes = classes 19 context.classifier_names = classifier_names 20 return context 21 22 def match(self, context, classes, classifier_names): 23 if classifier_names != context.classifier_names: 24 return self.NO_MATCH 25 elif isinstance(classes, Variable) and classes.is_continuous: 26 return (self.PERFECT_MATCH if context.classes is None 27 else self.NO_MATCH) 28 else: 29 return (self.PERFECT_MATCH if context.classes == classes 30 else self.NO_MATCH) 31